【问题标题】:how to handle encoded cyrillic data in json using Qt?如何使用 Qt 处理 json 中编码的西里尔文数据?
【发布时间】:2012-11-14 16:30:10
【问题描述】:

我有一个 JSON,但所有西里尔字符的编码如下:\u0418\u0437\u0431\u0435。 如何将其读入 QString?

【问题讨论】:

    标签: c++ json qt encoding decode


    【解决方案1】:

    这是 JSON 的 Unicode 转义序列。您应该为此使用 JSON 解析器。 JSON 解析中还有一些其他问题。

    如果你使用的是 Qt 5,它自带一个:http://qt-project.org/doc/qt-5.0/qjsondocument.html

    如果你不是,那就找一个像jsoncpp 这样的第三者。它相当轻量级,并且在其数据和 Qt 之间进行转换并不困难。

    【讨论】:

      【解决方案2】:

      那应该是 UTF8 或 UTF16 编码。使用这个:

      result = QString::fromUtf8(yourString.c_str(), yourString.size());
      

      result = QString::fromUtf16(yourString.c_str(), yourString.size());
      

      yourString 是 std::string 类型

      【讨论】:

      • 它不起作用。实际上我正在接收 QByteArray 中的数据。你还有什么想法吗?
      • 定义你的“不起作用”。它编译吗?运行时错误?举例说明您给出的字符串和获得的字符串(如果您无法在 stackoverflow.com 中打印非 ASCII 字符,请说明)
      • 它不会转换它 - 它返回相同的序列。我的 Json 包含转义的西里尔字符 \u0418\u0437\u0431\u0435。当我在结果中使用 result = QString::fromUtf8(yourString.c_str(), yourString.size()); 时,我得到相同的序列,而不是西里尔字符。怎么办?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      相关资源
      最近更新 更多