Russian Qt Forum
Ноябрь 24, 2024, 12:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTextCodec и русские буквы  (Прочитано 7432 раз)
phpCoder
Гость
« : Апрель 01, 2015, 17:39 »

Код:
Код
C++ (Qt)
QString text; QTextStream out(&text);
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
out.setCodec("UTF-8");
out << "русский язык";
qDebug() << text;
Выводит:
Код:
N?N?N?N??????? N??·N???
Где русские буквы?

Qt 5.4.0
Записан
Bepec
Гость
« Ответ #1 : Апрель 01, 2015, 20:35 »

а куда вы выводите?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Апрель 01, 2015, 20:40 »

в файл выводи и увидишь, что все работает нормально. правда при условии, что исходник твой в кодировке utf-8.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
sociopath
Гость
« Ответ #3 : Апрель 02, 2015, 11:03 »

QTextStream & QTextStream::operator<< ( const char * string )
This is an overloaded function.

Writes the constant string pointed to by string to the stream. string is assumed to be in ISO-8859-1 encoding. This operator is convenient when working with constant string data.
Записан
phpCoder
Гость
« Ответ #4 : Апрель 02, 2015, 14:21 »

Что в файл, что в консоль - одно и то же.
Значит с русским языком туго?
Записан
sociopath
Гость
« Ответ #5 : Апрель 02, 2015, 14:33 »

Мой предыдущий комментарий посмотрите. Не нужно передавать в QTextStream const char*, потому что QTextStream записывает эту строку в кодировке ISO-8859-1 (Latin1). QByteArray тоже передавать не стоит, потому что он при перекодировании будет использовать функцию fromAscii(). Если хотите в QTextStream передавать строки - передавайте QString:
Код:
out << QString::fromUtf8("русский язык");
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Апрель 02, 2015, 15:50 »

И тут весь такой я со своей подписью (второй пункт).
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
phpCoder
Гость
« Ответ #7 : Апрель 02, 2015, 20:14 »

Ясно, всем спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.07 секунд. Запросов: 22.