如何将 UTF-8 数据转换为 QString

Posted

技术标签:

【中文标题】如何将 UTF-8 数据转换为 QString【英文标题】:How to I get the UTF-8 data into a QString 【发布时间】:2012-04-03 19:42:06 【问题描述】:

通过服务器 API,我使用结构成员获取联系信息:

字符显示名称[USERNAME_MAX_SIZE];

其中一个名称是带有特殊字符的欧洲名称:“Per Spånt”

displayName的结构如下:

当我通过“fromUtf8”函数将“displayName”导入 QString 时,我得到以下 QString:

如何在不将特殊字符转换为两个奇怪字符的情况下将正确的字符串放入我的 QString 中?

【问题讨论】:

您确定转换不正确吗?这看起来很像将 UTF-8 解释为 Latin1。 嗯... fromUtf8 就是答案。这个对我有用。显示一些代码怎么样? 先生们,我的错-我“fromUtf8”输入了错误的字符串! 【参考方案1】:

FWIW,这对我使用 Qt 4.7.4 有效且无效。

#include <iostream>
#include <string>

#include <QDebug>
#include <QString>

int main()

    char name[7] = "Sp__nt";
    name[2]=-61;
    name[3]=-91;

    std::cout << name << std::endl;                           // works

    qDebug() << QString::fromUtf8( name );                    // does not work
    qDebug() << QString::fromAscii( name );                   // works
    qDebug() << QString::fromLatin1( name );                  // works
    qDebug() << QString::fromStdString( name );               // works

    return 0;

【讨论】:

以上是关于如何将 UTF-8 数据转换为 QString的主要内容,如果未能解决你的问题,请参考以下文章

如何将qt中的qbytearray类型数据转换成去qstring类型

如何将 QString 转换为 QString 指针?

一组float型数据,转换为Qstring,怎么做

在QT中如何将double转换为Qstring

如何将 ATL/MFC CString 转换为 QString?

如何将QString转换为char *或者相反