从UTF8到ASCII的转换
问题描述:
我有一个从UTF8编码存储的XML文件中读取的文本。 C#完全读取它,我使用调试器进行了检查,但是当我尝试将其转换为ASCII以将其保存在另一个文件中时,我得到了一个?在有冲突的角色的地方烧焦。举例来说,这样的文字:从UTF8到ASCII的转换
string s = "La introducción masiva de las nuevas tecnologías de la información";
将被保存为
"La introducci?n masiva de las nuevas tecnolog?as de la informaci?n"
我不能代替他们的拉丁(A,E,I,O,U)元音,因为有些词在西班牙语会错过了感觉。我已经试过this和this没有成功的问题。所以我希望有人能帮助我。第二个选定的答案甚至没有编译...!
如果有人想看看,我的代码是这样的一个:
private void WriteInput(string input)
{
byte[] byteArray = Encoding.UTF8.GetBytes(input);
byte[] asciiArray = Encoding.Convert(Encoding.UTF8, Encoding.ASCII, byteArray);
string finalString = Encoding.ASCII.GetString(asciiArray);
string inputFile = _idFile + ".in";
var batchWriter = new StreamWriter(inputFile, false, Encoding.ASCII);
batchWriter.Write(finalString);
batchWriter.Close();
}
答
这些字符在ASCII中没有映射。检查一个ASCII表,如Wikipedia's,以验证这一点。您可能会对Windows 1252编码感兴趣,或者称为“扩展ASCII”,因为它有时会被调用,其中包含许多重音字符的代码点,包括西班牙语。
var input = "La introducción masiva de las nuevas tecnologías de la información";
var utf8bytes = Encoding.UTF8.GetBytes(input);
var win1252Bytes = Encoding.Convert(
Encoding.UTF8, Encoding.GetEncoding("windows-1252"), utf8bytes);
File.WriteAllBytes(@"foo.txt", win1252Bytes);
答
不能完成。 ASCII没有这些字母,所以你可以做的最好的做法是URL编码或unicode转义编码它们。
怎么回事?如果ASCII没有这些字母,我怎样才能使用Notepad ++将编码从UTF8更改为ASCII并且像魅力一样工作? – 2010-12-04 06:10:33
因为Notepad ++没有真正使用ASCII。它使用的是类似CP1250的软件,它*具有这些字母。 – 2010-12-04 06:13:45