例如:“½”或 ASCII DEC 189。当我从文本文件中读取字节时,byte[] 包含有效值,在本例中为 189。
转换为 Unicode 会产生 Unicode 替换字符 65533。
UnicodeEncoding.Unicode.GetString(b);
转换为 ASCII 结果为 63 或“?”
ASCIIEncoding.ASCII.GetString(b);
如果这不可能,那么处理这些数据的最佳方式是什么?我希望能够执行像 Replace() 这样的字符串函数。
最佳答案
字节 189 代表 iso-8859-1(又名“Latin-1”)中的“½”,因此以下内容可能是您想要的:
var e = Encoding.GetEncoding("iso-8859-1");
var s = e.GetString(new byte[] { 189 });
.NET 中的所有字符串和字符都是 UTF-16 编码的,因此您需要使用编码器/解码器来转换任何其他内容,有时这是默认设置(例如 FileStream 实例的 UTF-8),但好的做法是始终指定.
您将需要某种形式的隐式或(更好的)显式元数据来为您提供有关哪种编码的信息。
关于c# - 如何将扩展的 ascii 转换为 System.String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/666385/