2011-10-05 4 views
12

QApplication 객체를 인스턴스화 한 직후에 유니 코드 문자를 인쇄 할 수 없게되었습니다.QApplication을 인스턴스화 한 후 qDebug()가 "unicodeness"를 잃었습니다.

다음 코드에서

및 모든 필요한 라이브러리를 포함 한 :이 이상한 행동을 수정하려면 어떻게

aeiou áéíóú 
aeiou áéíóú 

:이 출력을 얻고있다

int main(int argc, char** argv) 
{ 
    qDebug() << "aeiou áéíóú"; 
    QApplication app(argc, argv); 
    qDebug() << "aeiou áéíóú"; 
    return 0; 
} 

? 유니 코드 문자열을 인쇄 할 수 있어야합니다 (UTF-8).

+0

@HostileFork 그렇습니다. 모두 UTF-8로되어 있습니다. 웹 개발시에는 latin1에있는 파일을 가지고 UTF-8로 인코딩 된 문서를 제공하는 것이 재미 있지 않은데,이를 알지 못했습니다. lol –

답변

13

2017 UPDATE : 2011 년이 대답은 Qt는 5 년 Qt는 4. 적용은, 텍스트 코덱이 제거되었고, 모든 소스는 UTF-8이 될 것으로 예상된다. "Source code must be UTF-8 and QString wants it"

Qt가 char *을 문자열로 해석 할 때 텍스트 코덱을 사용합니다. 이는 전 세계적으로 설정되고, 당신은 당신이 당신의 프로젝트에 원하는 것을 선택할 수 있습니다 Qt의 기본 라틴-1이라고

https://doc.qt.io/qt-4.8/qtextcodec.html#setCodecForCStrings

주, 그리고 어딘가의 QApplication 생성자 호출 스택에 그 기본을 설립 할 수있다. 프로젝트에서 전 세계적으로 UTF-8을 사용하는 경우 다음을 시도해보십시오.

int main(int argc, char** argv) 
{ 
    qDebug() << "aeiou áéíóú"; 

    QApplication app(argc, argv); 
    QTextCodec *codec = QTextCodec::codecForName("UTF-8"); 
    QTextCodec::setCodecForCStrings(codec); 

    qDebug() << "aeiou áéíóú"; 
    return 0; 
} 

그리고 문제가 해결되는지 확인하십시오.

+0

문제가 해결되었습니다. –

관련 문제