【发布时间】:2012-11-14 16:30:10
【问题描述】:
我有一个 JSON,但所有西里尔字符的编码如下:\u0418\u0437\u0431\u0435。
如何将其读入 QString?
【问题讨论】:
标签: c++ json qt encoding decode
我有一个 JSON,但所有西里尔字符的编码如下:\u0418\u0437\u0431\u0435。
如何将其读入 QString?
【问题讨论】:
标签: c++ json qt encoding decode
这是 JSON 的 Unicode 转义序列。您应该为此使用 JSON 解析器。 JSON 解析中还有一些其他问题。
如果你使用的是 Qt 5,它自带一个:http://qt-project.org/doc/qt-5.0/qjsondocument.html
如果你不是,那就找一个像jsoncpp 这样的第三者。它相当轻量级,并且在其数据和 Qt 之间进行转换并不困难。
【讨论】:
那应该是 UTF8 或 UTF16 编码。使用这个:
result = QString::fromUtf8(yourString.c_str(), yourString.size());
或
result = QString::fromUtf16(yourString.c_str(), yourString.size());
yourString 是 std::string 类型
【讨论】:
\u0418\u0437\u0431\u0435。当我在结果中使用 result = QString::fromUtf8(yourString.c_str(), yourString.size()); 时,我得到相同的序列,而不是西里尔字符。怎么办?