【问题标题】:Converting Bytes to String results in ? rather than £ (ASCII)将字节转换为字符串会导致 ?而不是 £ (ASCII)
【发布时间】:2014-04-06 18:05:29
【问题描述】:

我从网络流中提取了一条预定义的消息,并使用以下方法将其转换为字符串:

string payloadString = System.Text.Encoding.ASCII.GetString(payloadBytes);

我从这里读到:http://www.ascii-code.com/

£仅适用于 ASCII 扩展 (127+),而我在上面使用的仅涵盖非扩展 ASCII (0 - 127)。

这导致我的一些有效载荷包含“?”而不是“£”。

有没有办法使用 ASCII 扩展编码转换字节?

谢谢。

【问题讨论】:

    标签: c# encoding byte


    【解决方案1】:

    使用Encoding.Default(这是系统的默认ANSI代码页)或Encoding.UTF8,而不是Encoding.ASCII。无论如何,请与发送消息的人确认编码应该是什么,并使用它。

    【讨论】:

      【解决方案2】:

      使用UTF8编码对象将Unicode字符编码为每个字符一到四个字节的序列,这将确保字符的正确编码

      string payloadString = System.Text.Encoding.UTF8.GetString(payloadBytes);
      

      【讨论】:

        【解决方案3】:

        更改您的代码:

        string payloadString = System.Text.Encoding.UTF8.GetString(payloadBytes);
        

        【讨论】:

          猜你喜欢
          • 2011-01-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-17
          • 2013-01-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多