1

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

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

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

4

2 回答 2

1

始终不破坏文本和非 ascii 字符是安全的。您可以毫无问题地使用 std::string 。

我的意思是,当您不涉及 XML 的内容时,例如尝试拆分字母或单词、尝试制作大写文本等,您没有任何问题。

于 2009-08-02T04:20:54.170 回答
1

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

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

于 2009-08-02T04:22:29.097 回答