【问题标题】:Parsing XML Encoded in UTF-8解析以 UTF-8 编码的 XML
【发布时间】:2009-08-02 04:15:00
【问题描述】:

我正在使用以 UTF-8 编码的 Wikipedia XML 转储。现在,我正在以 std::string 的形式读取所有内容,因此当我将 std::cout 显示到屏幕上时,外来字符显示为乱码。

虽然实际的解析过程只查找 ASCII 字符,但是当我将解析后的文件写入磁盘时,我想保留外来字符。换句话说,我希望输出与输入具有相同的编码。

使用 std::string 可以吗,还是我必须使用 ICU 之类的东西?我看过的图书馆似乎过于复杂。有什么东西可以快速完成吗?

【问题讨论】:

    标签: c++ xml utf-8 libxml2


    【解决方案1】:

    UTF-8 是 XML 文档的默认编码。只需将其写入您的文件即可。将其转换为 Unicode 并再次转换回来是没有意义的。如果它不小心掉到你的屏幕上,请避开你的视线:-)

    删除 '{' 之类的 ASCII 字符不会造成问题。 UTF-8 的设计使得多字节字符中的任何字节都不在 0-127 范围内,因此不会与 ASCII 字符混淆。

    【讨论】:

      【解决方案2】:

      始终不破坏文本和非ASCII字符是安全的。您可以使用 std::string 没有问题。

      我的意思是,当您不涉及 XML 的 内容 尝试执行拆分字母或单词、尝试制作大写文本等操作时,您不会遇到任何问题。

      【讨论】:

      • 即使我从字符串中删除字符,这仍然有效吗?例如,我想扫描每个字符并通过将所有其他字符复制到新字符串中来从字符串中删除“{{”。这在不转换的情况下仍然有效吗?
      • 删除 ASCII 字符不会造成问题。 UTF-8 的设计使得多字节字符中的任何字节都不在 0-127 范围内,因此不会与 ASCII 字符混淆。
      猜你喜欢
      • 2012-11-07
      • 2018-06-01
      • 2018-06-20
      • 1970-01-01
      • 2013-08-04
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      相关资源
      最近更新 更多