1

我正在尝试将带有特殊字符的 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()<< fileName 显示真正的值,即“â.tmp”,但在将其转换为 const a char* 后,我没有成功获得正确的值。

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

4

2 回答 2

1

由于将 QString 转换为 const char* :

QString str("hi lor!");
const char *s = str.toStdString().c_str();
msg.setText(QString::fromUtf8(s));
msg.exec();
于 2014-11-04T14:53:05.107 回答
0

编辑:使用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<< ( const char * s ) 支持什么编码类型,它可能与平台有关,请尝试验证另一个正确的转换。问题可能出在 qDebug() 或其写入的流中。

于 2012-12-13T14:32:20.457 回答