C# 转换为ISO 8859-1时,控制台不显示带有caron的小s
我的应用程序通过TCP接收ISO 8859-1字符的整数值,并应在控制台中显示该整数值以供测试。为了将Int/Bytes转换为ISO 8859-1字符串,我从以下公认答案中获取代码: 例如,其工作性能良好,在ISO 8859-1中的值为½,为189。但在我的测试中,我得到了一个值为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
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);