Ответ 1
2017 UPDATE. Этот ответ от 2011 года относится к Qt 4. В Qt 5 текстовые кодеки были исключены, и ожидается, что все источники будут UTF-8. См. Исходный код должен быть UTF-8 и QString хочет его
Когда Qt интерпретирует char *
в строке, он использует текстовый кодек. Это настроено глобально, и вы можете выбрать, что хотите для своего проекта:
https://doc.qt.io/qt-4.8/qtextcodec.html#setCodecForCStrings
Обратите внимание, что значение Qt по умолчанию - Latin-1, и оно может установить это значение по умолчанию в стеке вызова конструктора 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;
}
И посмотрите, решит ли это вашу проблему.