【问题标题】:How to read and store string in UTF-8 format in C#?如何在 C# 中以 UTF-8 格式读取和存储字符串?
【发布时间】:2015-07-20 08:42:32
【问题描述】:

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

我尝试阅读以下网址:

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

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

【问题讨论】:

  • 您是否尝试过以 unicode 格式读取文件?
  • 您在哪里以及如何打印它?问题完全有可能(并且很可能)出在显示端,而不是读取端。文件的字节数是多少?你能显示文件的十六进制转储吗?
  • @afsharm 记事本也许不是回答这个问题的最佳工具;p
  • @afsharm 直到最近,记事本 unicode 支持糟糕;现在好多了,但是如果编码不明显,没有BOM,还是会糊涂。但是,我怀疑这里的根本问题与文件读取有关......
  • 检查文件编码,可能是 ANSI。使用 Notepad++ 之类的工具将其转换为 UTF-8 或 Unicode,您的代码就可以工作了。

标签: c# utf-8


【解决方案1】:

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

可能看起来的编码(如果我们去掉 BOM):

  • utf-7
  • windows-1252
  • windows-1254
  • iso-8859-1
  • iso-8859-4
  • iso-8859-9
  • iso-8859-15

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多