我从网络流中提取了预定义的消息,并使用以下方法将其转换为字符串:
string payloadString = System.Text.Encoding.ASCII.GetString(payloadBytes);
我从阅读中注意到:http://www.ascii-code.com/
£仅用于ASCII扩展(127+),我上面使用的仅涵盖非扩展ASCII(0 - 127)。
这导致我的一些有效负载包含'?'而不是'£'。
有没有办法使用ASCII扩展编码转换字节?
感谢。
答案 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);