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