Dav*_*nde 12 c# encoding ascii utf-8
我从以UTF8编码存储的XML文件中读取文本.C#读取它完美,我检查了调试器,但是当我尝试将其转换为ASCII以将其保存在另一个文件中时,我得到了一个?char在角色冲突的地方.例如,本文:
string s = "La introducción masiva de las nuevas tecnologías de la información";
Run Code Online (Sandbox Code Playgroud)
将被保存为
"La introducci?n masiva de las nuevas tecnolog?as de la informaci?n"
Run Code Online (Sandbox Code Playgroud)
我不能只为他们的拉丁语(a,e,i,o,u)元音取代它们,因为西班牙语中的某些单词会错过这种意义.我已经试过这和这个问题没有sucess.所以我希望有人可以帮助我.第二个选择的答案甚至没有编译......!
如果有人想看看,我的代码是这样的:
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();
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*tta 31
这些字符在ASCII中没有映射.查看ASCII表,如维基百科,以验证这一点.您可能对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);
Run Code Online (Sandbox Code Playgroud)
无法做到.ASCII没有这些字母,因此您可以做的最好的事情是对它们进行URL编码或unicode-escape编码.
归档时间: |
|
查看次数: |
38264 次 |
最近记录: |