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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Проблемы с кодировкой  (Прочитано 14726 раз)
Edynchik
Гость
« : Апрель 11, 2011, 09:52 »

Установил в Visual Studio 2008 Qt add-in и библиотеку, вроде все нормально компилируется. Только возникла одна проблема: При помещении след. кода
Код:
QString s = "Введите КОД";
QLocale local;
local = locale();
if(ui.lineEdit->text() == "")
ui.label_2->setText(s);
в label_2 выдается абракадабра...что можно с этим сделать?
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #1 : Апрель 11, 2011, 10:05 »

Поискать по форуму и почитать в книгах. Тема даже не в вопросах новичков, ну сколько уже можно поднимать такие вопросы...
Записан
andrew.k
Гость
« Ответ #2 : Апрель 11, 2011, 10:57 »

QString::setCodecFor*
Записан
dsp
Гость
« Ответ #3 : Апрель 12, 2011, 19:44 »

QString::fromLocal8Bit("Русский текст");
Записан
blood_shadow
Гость
« Ответ #4 : Апрель 12, 2011, 21:51 »

assistant -> класс QString -> секция Initializing a String
там написано почему так или книга Бланшет - раздел "Интернационализация"
Записан
andrew.k
Гость
« Ответ #5 : Апрель 13, 2011, 09:32 »

QString::fromLocal8Bit("Русский текст");
Писать это каждый раз мягко говоря неудобно.
Записан
dsp
Гость
« Ответ #6 : Апрель 13, 2011, 21:14 »

QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
Записан
Edynchik
Гость
« Ответ #7 : Апрель 14, 2011, 10:26 »

QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
в таком случае, в linux тоже все корректно будет отображаться?
Записан
Nimbus
Гость
« Ответ #8 : Апрель 14, 2011, 10:51 »

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); //Для нормальных людей
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251")); //Для студии
Всё зависит от кодировки исходников, которые создаёт твоя IDE
« Последнее редактирование: Апрель 14, 2011, 10:54 от JC » Записан
blood_shadow
Гость
« Ответ #9 : Апрель 14, 2011, 11:42 »

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); //Для нормальных людей
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251")); //Для студии
Всё зависит от кодировки исходников, которые создаёт твоя IDE
причем тут студия? все зависит от ОС, если ОС линукс то по умолчанию будет UTF-8
если ОС виндовс или мак будет использоваться кодировка которая в системе по умолчанию
она отображается как системная, например у меня криэтор под виндой и он использует
системную кодировку по умолчанию(ср1251), но такое поведение можно изменить в настройках,
выбрав необходимую кодировку текста, кода:

Код
C++ (Qt)
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale())
 

хватает с головой для любой локали, и к тому же код стает переносимым между разными ОС
Записан
BRE
Гость
« Ответ #10 : Апрель 14, 2011, 11:46 »

хватает с головой для любой локали, и к тому же код стает переносимым между разными ОС
Ты хотел сказать НЕ переносимым?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #11 : Апрель 14, 2011, 11:48 »

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

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

хватает с головой для любой локали, и к тому же код стает переносимым между разными ОС
Ты хотел сказать НЕ переносимым?

я имел ввиду на уровне кодировки символов, то есть если мы возьмем файлы с линукса
в которых была кодировка "UTF-8" и было установлено:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
то после транспортировки этого кода под винду, преобразования кириллицы не будет коректным
так как в винде "CP1251", во время конвертации строки char* в QString будет будет использоватся
конвертация с "UTF-8" в "UTF-16", как указано в QTextCodec::setCodecForCStrings и в итоге мы увидим
кракозябры
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale())
будет работать везде коректно
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #13 : Апрель 14, 2011, 13:13 »

при переносе файла с оси на ось кодировка не меняется О_о
она может поехать при пересохранении, но блин, настройте вашу ИДЕ на утф-8
Записан
dsp
Гость
« Ответ #14 : Апрель 14, 2011, 19:32 »

QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
в таком случае, в linux тоже все корректно будет отображаться?
Я это и пишу в линуксе!
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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