首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从UTF8到ASCII码的转换

从UTF8到ASCII码的转换
EN

Stack Overflow用户
提问于 2010-12-04 14:06:34
回答 2查看 51K关注 0票数 15

我从一个以UTF8编码存储的XML文件中读取了一个文本。C#可以很好地读取它,我检查了调试器,但是当我试图将它转换为ASCII码以将其保存在另一个文件中时,我得到了一个?在存在冲突字符的地方使用char。例如,下面的文本:

代码语言:javascript
复制
string s = "La introducción masiva de las nuevas tecnologías de la información";

将另存为

代码语言:javascript
复制
"La introducci?n masiva de las nuevas tecnolog?as de la informaci?n"

我不能简单地用它们的拉丁文(a,e,i,o,u)元音替换它们,因为西班牙语中的一些单词会失去意义。我已经尝试了thisthis问题,但都没有成功。所以我希望有人能帮助我。第二个答案中选择的答案甚至没有编译...!

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

代码语言:javascript
复制
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();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-04 14:13:50

这些字符在ASCII中没有映射。查看ASCII表,如Wikipedia's,以验证这一点。您可能对Windows 1252编码或有时称为“扩展ASCII”感兴趣,它具有许多重音字符的代码点,包括西班牙语。

代码语言:javascript
复制
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);
票数 35
EN

Stack Overflow用户

发布于 2010-12-04 14:08:22

不能这样做。ASCII没有这些字母,所以您可以做的最好的事情就是对它们进行URL编码或unicode转义编码。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4352209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档