ASCII与UTF-8无法解码法语字符,应选用何种编码?
解决方案:使用Windows-1252或ISO-8859-1编码解码
根据提供的信息分析:
- 目标字符
é对应的十进制字节值为233(十六进制0xE9),属于单字节编码特征 - ASCII编码仅支持0-127范围内的字符,超出范围的
0xE9会被强制替换为问号 - UTF-8编码中
é需要两个字节(0xC3 0xA9),用单字节0xE9解码会因无效序列生成乱码
你需要使用单字节的西欧字符编码来正确解码,在.NET中有两种可靠选择:
- Windows-1252编码(Windows系统默认的西欧字符编码):
private void ReceivedData(byte[] data) { string info = Encoding.GetEncoding(1252).GetString(data); }
- ISO-8859-1编码(又称Latin1,与Windows-1252在西欧字符集上基本兼容):
private void ReceivedData(byte[] data) { string info = Encoding.Latin1.GetString(data); }
以上两种编码均可将单字节0xE9正确解码为é字符。
内容的提问来源于stack exchange,提问作者Dominique
相关产品推荐
相关产品推荐

