fa all
fa all

Reputation: 11

QString with special characters to const char*

I m trying to convert QString with special characters to const char* but I did not succeed. my function is:

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 display the true value that is "â.tmp" but after converting it to const a char*, I do not succeed to have the right value.

In the second time I try to use const char* cfileName = QString::fromUtf8(fileName.toAscii().data()); but I did not still have the right value, it display the same thing: "a?.tmp". How can I fix this thank you

Upvotes: 1

Views: 1992

Answers (2)

due to convert QString to const char* :

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

Upvotes: 1

odinthenerd
odinthenerd

Reputation: 5552

EDIT: using QByteArray QString::toUtf8 () const is much better

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

ORIGIONAL:

You probably need to use a codec, see http://qt-project.org/doc/qt-4.8/qtextcodec.html

something like this should work:

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

the documentation does not say what encoding types QDebug & QDebug::operator<< ( const char * s ) supports, it may be platform dependent, try verifying a correct conversion another. The problem may be in qDebug() or the stream it writes to.

Upvotes: 0

Related Questions