C# 转换扩展ASCII/ANSI值

C# 转换扩展ASCII/ANSI值,c#,extended-ascii,C#,Extended Ascii,我有一个程序,可以输入文本,并使用许多函数对其进行排序,文本应该是可读的,无论其格式如何。但是,当导入保存为扩展ASCII编码的文件时,超过127的任何字符都会被忽略。环顾四周,我似乎不知道如何克服这一点。文件在UTF-8和Unicode中可以很好地读取。我已经尝试将字符串转换为UTF-8,但问题中的字母仍然是问号形状。我可以看出这些值是正确的:0xBF forā,但它们没有被解释为value 有人能帮我吗?我以前没有做过很多这类的工作。如果有帮助的话,我在C#工作 我当前用于转换的代码如下所示

我有一个程序,可以输入文本,并使用许多函数对其进行排序,文本应该是可读的,无论其格式如何。但是,当导入保存为扩展ASCII编码的文件时,超过127的任何字符都会被忽略。环顾四周,我似乎不知道如何克服这一点。文件在UTF-8和Unicode中可以很好地读取。我已经尝试将字符串转换为UTF-8,但问题中的字母仍然是问号形状。我可以看出这些值是正确的:0xBF forā,但它们没有被解释为value

有人能帮我吗?我以前没有做过很多这类的工作。如果有帮助的话,我在C#工作

我当前用于转换的代码如下所示:

System.Text.UTF8Encoding u = new System.Text.UTF8Encoding();
byte[] asciiBytes = Encoding.UTF8.GetBytes(sd);
sd = u.GetString(asciiBytes);
其中
sd
是字符串。导入此字符串时,我不指定文本编码:

string input = File.ReadAllText(fname);
...
parser(input);
我可以看出这些值是正确的:0xBF表示ā

这不是ā的utf-8编码,而是一个双字节序列,0xC3+0xBB。显然你猜错了文件编码。在西欧和美洲常见的Windows代码页1252中,该字符的编码为0xFB。在英国,你的居住国也很常见。你把数字倒过来了吗


改用Encoding.Default。

如果您发布一些代码,我们可以指出错误。还要具体说明所使用的编码和I/O。对不起,我指的是0xFB。我已将其更改为默认值,我的调试器显示我在Windows-1252中的默认值,但我得到的是问号(未知字符(0x3f))而不是字母。心理回答得1分。不知何故,您没有正确使用Encoding.Default,比如没有将其作为第二个参数传递给ReadAllText()。现在精神状态有点不好谢谢你把它整理好了。你又明白了,我没有把它当作第二个论点,就像我说的,我以前在这方面做得不多。再次感谢。