Подскажите, как в Qt выполнить преобразование из wchar* в char* с поддержкой русского языка?
Подскажите, как в Qt выполнить преобразование из wchar* в char* с поддержкой русского языка?
wcstombs не помогает
Вот так можно через QString например
QString::from* QString::to*
например
QString::fromWCharArray
QString::toLocal8Bit
Как через QTextCodec сделать сам почитай http://qt-project.org/doc/qt-4.8/classes.html
С первым проверял. На английском выводит нормально, а по-русски какой-то бред выводит
В консоль - он и не должен нормально выводить в консоле cp866 кодировка а он преобразует в win1251.
В widget - ну это смотря какой текстовый кодек по умолчанию, если UTF-8 то и не выведет нормально.
В космос - ну это уже у инопланетян на приеме проблемы.
Ты в файлик сохрани, открой его и посмотри что получилось.
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
покажи свой код, в котором оно выводит ненормально
Если Windows-1251, то для всяких надписей вначале вбей
QTextCodec::setCodecForTr(QTextCodec::codecForName("windows-1251"));
Это для подобного такому:
QPushButton *butAbout = new QPushButton(QPushButton::tr("О программе..."));
Это рекомендованный стиль все строковые константы предварять tr(), тогда, если потребуется локализация, то все будет элементарно просто.
И пользуйся QString, там все есть и хелп отличный. Да тут и так все уже рассказали.
Всем спасибо, решение найдено
В Qt5 setCodecForCStrings исчезла, теперь всегда подразумевается кодировка UTF-8 для литералов в исходниках (соответственно в setCodecForCStrings исчезает надобность). В UTF-8 и надо делать исходники, чтобы избежать проблем с локализацией. Это я так понял ситуацию с Qt5. Верно? Еще изменения в сравнении с Qt4 касаются fromAscii() / toAscii() и другого; приличный список изменений -