【问题标题】:QString with special characters to const char*带有特殊字符的 QString 到 const char*
【发布时间】:2012-11-30 10:24:58
【问题描述】:

我正在尝试将带有特殊字符的 QString 转换为 const char* 但我没有成功。我的功能是:

void class::func(const QString& Name) // fileName = "â.tmp" 
{ 
  qDebug()<< Name; // display "â.tmp"
  const char* cfileName = Name.toAscii().data();
  qDebug() << cfileName;  // display "a?.tmp" 
}

qDebug()

第二次我尝试使用 const char* cfileName = QString::fromUtf8(fileName.toAscii().data());但我仍然没有正确的值,它显示相同的内容:“a?.tmp”。我该如何解决这个问题谢谢

【问题讨论】:

    标签: qt char special-characters qstring


    【解决方案1】:

    由于将 QString 转换为 const char* :

    QString str("hi lor!");
    const char *s = str.toStdString().c_str();
    msg.setText(QString::fromUtf8(s));
    msg.exec();
    

    【讨论】:

      【解决方案2】:

      编辑:使用QByteArray QString::toUtf8 () const 更好

      QString string = "â.tmp";
      const char* encodedString = string.toUtf8().data();
      

      原件:

      您可能需要使用编解码器,请参阅http://qt-project.org/doc/qt-4.8/qtextcodec.html

      这样的东西应该可以工作:

      QString string = "â.tmp";
      QTextCodec *codec = QTextCodec::codecForName("UTF-8");
      QByteArray encodedString = codec->fromUnicode(string);
      

      文档没有说明 QDebug 和 QDebug::operator

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-12
        • 1970-01-01
        • 2013-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多