2012-12-12 2 views
1

특수 문자가있는 QString을 const char *로 변환하려하지만 성공하지 못했습니다. 내 기능은 다음과 같습니다const char에 대한 특수 문자가있는 QString *

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를 변환 한 후, 나는 올바른 값을 갖도록 성공하지 않습니다.

두 번째로 const char * cfileName = QString :: fromUtf8 (fileName.toAscii(). data())를 사용하려고합니다. 그러나 나는 여전히 올바른 가치를 지니지 않았고 똑같은 것을 보여 주었다 : "a? .tmp". 어떻게이 문제를 해결할 수는

답변

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() 또는 쓰기 스트림에있을 수 있습니다.

1

const를 문자 *로 QString 변환으로 인해 :

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