1

我的应用程序通过 TCP 接收 ISO 8859-1 字符的整数值,并应显示它以在控制台中进行测试。为了将 Int/Bytes 转换为 ISO 8859-1 字符串,我从这个问题的接受答案中获取了代码:

var e = Encoding.GetEncoding("iso-8859-1");
var s = e.GetString(new byte[] { 189 });

它工作正常,例如值为189 ,在 ISO 8859-1中是½ 。但是在我的测试中,根据这个站点,我得到了一个值为154š 带有 caron 的拉丁小写字母 S)的 Byte 。 问题是它没有在控制台上显示它,它只是显示一个这样的问号: 并且调试器只显示一个纯字符串:可能是什么错误?任何帮助将不胜感激。

在此处输入图像描述在此处输入图像描述



4

1 回答 1

3

我要在这里冒险了;ISO/IEC 8859-1 没有定义 126 到 159 之间的值。请参阅http://en.wikipedia.org/wiki/ISO/IEC_8859-1

这行得通;

  var e = Encoding.GetEncoding("Windows-1252");
  var s = e.GetString(new byte[] { 154 });

  Console.OutputEncoding = Encoding.GetEncoding("Windows-1252");

  Console.WriteLine(s);

我相信 Windows-1252 是首选;

...但是 HTML 5 规范草案要求宣传为 ISO-8859-1 的文档实际上使用 Windows-1252 编码进行解析。[2])

http://en.wikipedia.org/wiki/ISO/IEC_8859-1

于 2013-03-16T13:57:41.273 回答