如何在C#中以UTF-8格式读取和存储字符串?

时间:2015-07-20 08:42:32

标签: c# utf-8

我有一个包含网址的文件,其中一个是http://en.wikipedia.org/wiki/São_Paulo。注意'ã'。当我读取网址(在C#中)并尝试打印时,它显示为http://en.wikipedia.org/wiki/S?o_Paulo

我尝试按以下方式阅读网址:

List<string> urls = System.IO.File.ReadAllLines(wikiURL_FilePath, Encoding.UTF8).ToList();

请注意,我已经通过了第二个参数以UTF8格式读取它,但问题仍未解决。如何以正确的形式阅读和存储字符串?

1 个答案:

答案 0 :(得分:3)

尽管有UTF-8 BOM,但您显示的数据根本不是UTF-8; São的UTF-8是53-C3-A3-6F;你有53-E3-6F,这是...基本的多语言平面数据的正确的unicode代码点,但错误地编码为磁盘为UTF-8。你可能需要修复这个文件的代码,或者:同意编码是什么(它可能是一个单字节的代码页,但你需要同意哪个,否则一切都崩溃了)。

可能看起来编码(如果我们拿走BOM):

  • UTF-7
  • 窗口1252
  • 窗口-1254
  • ISO-8859-1
  • 异8859-4
  • ISO-8859-9
  • 异8859-15