[英]Converting Bytes to String results in ? rather than £ (ASCII)
我从网络流中提取了一条预定义的消息,并使用以下方法将其转换为字符串:
string payloadString = System.Text.Encoding.ASCII.GetString(payloadBytes);
我从这里的阅读中注意到: http : //www.ascii-code.com/
£ 仅适用于 ASCII 扩展(127+),而我上面使用的仅涵盖非扩展 ASCII(0 - 127)。
这导致我的一些有效负载包含“?” 而不是“£”。
有没有办法使用 ASCII 扩展编码转换字节?
谢谢。
使用Encoding.Default
(这是系统的默认 ANSI 代码页)或Encoding.UTF8
,而不是Encoding.ASCII
。 在任何情况下,请与发送消息的人核对编码应该是什么,并使用它。
使用UTF8
编码对象将Unicode
字符编码为每个字符一到四个字节的序列,这将确保字符的正确编码
string payloadString = System.Text.Encoding.UTF8.GetString(payloadBytes);
更改您的代码:
string payloadString = System.Text.Encoding.UTF8.GetString(payloadBytes);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.