我从一个以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)元音替换它们,因为西班牙语中的一些单词会失去意义。我已经尝试了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();
}发布于 2010-12-04 14:13:50
这些字符在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);发布于 2010-12-04 14:08:22
不能这样做。ASCII没有这些字母,所以您可以做的最好的事情就是对它们进行URL编码或unicode转义编码。
https://stackoverflow.com/questions/4352209
复制相似问题