C# 转换为ISO 8859-1时,控制台不显示带有caron的小s

C# 转换为ISO 8859-1时,控制台不显示带有caron的小s,c#,encoding,console,iso-8859-1,windows-1252,C#,Encoding,Console,Iso 8859 1,Windows 1252,我的应用程序通过TCP接收ISO 8859-1字符的整数值,并应在控制台中显示该整数值以供测试。为了将Int/Bytes转换为ISO 8859-1字符串,我从以下公认答案中获取代码: 例如,其工作性能良好,在ISO 8859-1中的值为½,为189。但在我的测试中,我得到了一个值为154的字节,根据。 问题是它没有在控制台上显示,它只是显示一个问号,如下所示: 调试器只显示一个普通字符串: 可能有什么错误?任何帮助都将不胜感激。我将在这里孤注一掷;ISO/IEC 8859-1未定义126和15

我的应用程序通过TCP接收ISO 8859-1字符的整数值,并应在控制台中显示该整数值以供测试。为了将Int/Bytes转换为ISO 8859-1字符串,我从以下公认答案中获取代码:

例如,其工作性能良好,在ISO 8859-1中的值为½,为189。但在我的测试中,我得到了一个值为
154
的字节,根据。

问题是它没有在控制台上显示,它只是显示一个问号,如下所示: 调试器只显示一个普通字符串:


可能有什么错误?

任何帮助都将不胜感激。

我将在这里孤注一掷;ISO/IEC 8859-1未定义126和159之间的值。看

这是有效的

  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])


我无法复制。在LinqPad
Encoding.GetEncoding(“iso-8859-1”).GetString(新字节[]{189})中
产生
½
。这本身不是一个C问题,我正在修改标题。该标准实际定义了154的值吗?看起来不像;是的,“š”未在ISO 8859-1中定义。它在ISO 8859-2的185码处。嗯,也许有解决办法?因为C++中的STD::char在值为154时才显示它。@ TursSodotFrase:那么,你使用的不是ISO 859-1。可能是某个特定于平台的扩展?
  var e = Encoding.GetEncoding("Windows-1252");
  var s = e.GetString(new byte[] { 154 });

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

  Console.WriteLine(s);