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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: в сотый раз о кодировках текста  (Прочитано 2985 раз)
andrew.k
Гость
« : Ноябрь 04, 2014, 15:53 »

Вот такой простой пример:

Код
C++ (Qt)
#include <QtCore/QString>
#include <QtGui/QApplication>
#include <QtCore/QtDebug>
#include <QtCore/QTextCodec>
 
int main(int argc, char *argv[])
{
   QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
   qDebug() << QString::fromUtf8("Русский текст 1");
   qDebug() << "Русский текст 2";
 
   QApplication a(argc, argv);
 
   qDebug() << QString::fromUtf8("Русский текст 1");
   qDebug() << "Русский текст 2";
   return 0;
}

Вывод такой:
Код
Bash
andrew@astra13:~/projects/testcode$ ./testcode
"  1"
 2
"Русский текст 1"
Русский текст 2

Почему для корректной работы кодеков требуется создание QApplication(QCoreApplication)?

Да забыл, Qt 4.8.3, Linux
« Последнее редактирование: Ноябрь 04, 2014, 16:07 от andrew.k » Записан
andrew.k
Гость
« Ответ #1 : Ноябрь 04, 2014, 16:09 »

Вызов QString::fromUtf8 не делает ничего особенного, по сути вызывает другой метод QUtf8::convertToUnicode.
В котором не видно зависимости от Q[Core]Appliction.

UPD: Проверил, код этого метода действительно работает по-разному до и после создания экземпляра "апликейшена".
UPD2: Похоже проблема в qDebug(), видимо апликейшн его инициализирует как-то (printf выводит текст корректно).
« Последнее редактирование: Ноябрь 04, 2014, 16:28 от andrew.k » Записан
daindygroup
Гость
« Ответ #2 : Ноябрь 05, 2014, 07:43 »



It is very good at it. I feel like I'm reading a lot. It can be used in everyday life, really.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Ноябрь 05, 2014, 07:45 »



It is very good at it. I feel like I'm reading a lot. It can be used in everyday life, really.

Ага... в повседневной жизни Веселый
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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