从UTF8转换为ASCII

我从以UTF8编码存储的XML文件中读取文本。 C#读取它完美,我用调试器检查,但是当我尝试将其转换为ASCII以将其保存在另一个文件中时,我得到了一个? char在角色冲突的地方。 例如,本文:

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)元音取代它们,因为西class牙语中的某些单词会错过这种感觉。 我已经尝试了这个问题并没有成功。 所以我希望有人可以帮助我。 第二个选择的答案甚至没有编译……!

如果有人想看看,我的代码是这样的:

 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表,如维基百科 ,以validation这一点。 您可能对Windows 1252编码或“扩展ASCII”感兴趣,因为它有时被称为,其中包含许多重音字符的代码点,包括西class牙语。

 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-escape编码。