将字节转换为字符串会导致?而不是£(ASCII)

时间:2014-04-06 10:01:00

标签: c# encoding byte

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

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

我从阅读中注意到:http://www.ascii-code.com/

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

这导致我的一些有效负载包含'?'而不是'£'。

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

感谢。

3 个答案:

答案 0 :(得分:2)

使用Encoding.Default(系统的默认ANSI代码页)或Encoding.UTF8,而不是Encoding.ASCII。在任何情况下,请与发送消息的人一起检查编码应该是什么,并使用它。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

更改您的代码:

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