【问题标题】:C# remove invisible chars from NetworkStreamC# 从 NetworkStream 中删除不可见字符
【发布时间】:2014-08-31 07:49:18
【问题描述】:

我正在制作一个简单的命令程序,在尝试创建目录时,出现路径中存在无效字符的错误,我猜是 NetworkStream 添加了不可见字符?

代码:

Console.WriteLine(">> Recieved: " + Encoding.ASCII.GetString(data, 0, data.Length));
byte[] back = null;
if (Encoding.ASCII.GetString(data, 0, data.Length).Contains("cd "))
{
    try
    {
        back = Encoding.UTF8.GetBytes(">> Created Directory");
        stream.Write(back, 0, back.Length);
        string dir = Encoding.ASCII.GetString(data, 0, data.Length).Replace("cd ", "");
        Directory.CreateDirectory(dir);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }

}

EXACT ERROR: System.Argument Exception, Illegal Characters at Path

【问题讨论】:

  • 为什么不在调试器中检查字符串?
  • 它使用了不可见的字符。无论如何我都看不到它们。
  • 是的,你会的。转换为字节数组(或任何你喜欢的)
  • 在某一时刻,您决定它是 ASCII,然后转换为 UTF8。是哪个?
  • 我已将其转换为 UTF8,但仍然遇到同样的错误,不过感谢您指出这一点。

标签: c# networking tcp stream networkstream


【解决方案1】:

dir.ToCharArray() 放在调试器监视表达式中。您现在将看到单个字符代码,包括不可打印的代码,例如 0。

【讨论】:

    猜你喜欢
    • 2011-07-15
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 2017-01-18
    • 2011-09-12
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多