【问题标题】:Problems in converting to UTF-8 in Qt在 Qt 中转换为 UTF-8 的问题
【发布时间】:2014-11-03 17:03:17
【问题描述】:

我尝试在 Qt 中显示一个波斯语字符串:

QMessageBox msg;

QString str = "یا حسین";
msg.setText(QString::fromUtf8(str));
msg.exec();

但它显示以下错误:

/home/msi/Desktop/VoMail 项目/项目/VoMail-build-desktop-Qt_4_8_1_in_PATH__System__Release/../VoMail/mainwindow.cpp:40: 错误:没有匹配函数调用 'QString::fromUtf8(QString&)'

我想使用字符串变量,而不是直接使用字符串。

如何将 QString 变量转换为 Utf8?

【问题讨论】:

    标签: qt utf-8 qstring persian


    【解决方案1】:

    正如here 所见,QString::fromUtf8() 不接受QString 类型的参数。你必须给它一个const char *,所以你可以这样重写它:

    QMessageBox msg;
    
    QString str = QString::fromUtf8("یا حسین");
    msg.setText(str);
    msg.exec();
    

    【讨论】:

    • 在 Qt 版本 2 中,不能在 fromUtf8() 方法中设置非常量参数。相反,我们可以使用QString::fromUtf8("یا علی"); 语句来做到这一点。
    【解决方案2】:

    这样写不是个好主意

    使用这个一定更好

     QString str(tr("ya hossein");
    

    并使用 linguist 并将波斯语翻译文件添加到您的项目 http://qt-project.org/doc/qt-4.8/linguist-translators.html

    如果您不想使用它,您必须确保您的 IDE 或代码编辑器(如 qtcreator)使用 utf8 来保存文件,然后使用

     QString str("یا حسین");
    

    应该没问题,我测试了很多次

    【讨论】:

      猜你喜欢
      • 2013-02-25
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      相关资源
      最近更新 更多