繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM