Название: Проблемы с кодировкой Отправлено: Edynchik от Апрель 11, 2011, 09:52 Установил в Visual Studio 2008 Qt add-in и библиотеку, вроде все нормально компилируется. Только возникла одна проблема: При помещении след. кода
Код: QString s = "Введите КОД"; Название: Re: Проблемы с кодировкой Отправлено: Hellraiser от Апрель 11, 2011, 10:05 Поискать по форуму и почитать в книгах. Тема даже не в вопросах новичков, ну сколько уже можно поднимать такие вопросы...
Название: Re: Проблемы с кодировкой Отправлено: andrew.k от Апрель 11, 2011, 10:57 QString::setCodecFor*
Название: Re: Проблемы с кодировкой Отправлено: dsp от Апрель 12, 2011, 19:44 QString::fromLocal8Bit("Русский текст");
Название: Re: Проблемы с кодировкой Отправлено: blood_shadow от Апрель 12, 2011, 21:51 assistant -> класс QString -> секция Initializing a String
там написано почему так или книга Бланшет - раздел "Интернационализация" Название: Re: Проблемы с кодировкой Отправлено: andrew.k от Апрель 13, 2011, 09:32 QString::fromLocal8Bit("Русский текст"); Писать это каждый раз мягко говоря неудобно.Название: Re: Проблемы с кодировкой Отправлено: dsp от Апрель 13, 2011, 21:14 QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
Название: Re: Проблемы с кодировкой Отправлено: Edynchik от Апрель 14, 2011, 10:26 QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); в таком случае, в linux тоже все корректно будет отображаться?Название: Re: Проблемы с кодировкой Отправлено: Nimbus от Апрель 14, 2011, 10:51 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); //Для нормальных людей
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251")); //Для студии Всё зависит от кодировки исходников, которые создаёт твоя IDE Название: Re: Проблемы с кодировкой Отправлено: blood_shadow от Апрель 14, 2011, 11:42 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); //Для нормальных людей причем тут студия? все зависит от ОС, если ОС линукс то по умолчанию будет UTF-8QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251")); //Для студии Всё зависит от кодировки исходников, которые создаёт твоя IDE если ОС виндовс или мак будет использоваться кодировка которая в системе по умолчанию она отображается как системная, например у меня криэтор под виндой и он использует системную кодировку по умолчанию(ср1251), но такое поведение можно изменить в настройках, выбрав необходимую кодировку текста, кода: Код
хватает с головой для любой локали, и к тому же код стает переносимым между разными ОС Название: Re: Проблемы с кодировкой Отправлено: BRE от Апрель 14, 2011, 11:46 хватает с головой для любой локали, и к тому же код стает переносимым между разными ОС Ты хотел сказать НЕ переносимым?Название: Re: Проблемы с кодировкой Отправлено: Пантер от Апрель 14, 2011, 11:48 Ну и я тут такой вклинюсь со своей подписью (пункт 2).
Название: Re: Проблемы с кодировкой Отправлено: blood_shadow от Апрель 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()) Название: Re: Проблемы с кодировкой Отправлено: Авварон от Апрель 14, 2011, 13:13 при переносе файла с оси на ось кодировка не меняется О_о
она может поехать при пересохранении, но блин, настройте вашу ИДЕ на утф-8 Название: Re: Проблемы с кодировкой Отправлено: dsp от Апрель 14, 2011, 19:32 QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); в таком случае, в linux тоже все корректно будет отображаться?Название: Re: Проблемы с кодировкой Отправлено: Edynchik от Апрель 15, 2011, 09:42 Спасибо,
Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); Название: Re: Проблемы с кодировкой Отправлено: BRE от Апрель 15, 2011, 09:48 Спасибо, Не надо так делать.Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); Лучше разберись один раз как работать с кодировками, что и когда во что преобразовывается, как использовать локализации и т.д. В дальнейшем ты избавишь себя, а может и других разработчиков сопровождающих твой код, от не нужных проблем. Кстати, на форуме уже очень много раз поднимались аналогичные темы. ;) Название: Re: Проблемы с кодировкой Отправлено: Пантер от Апрель 15, 2011, 10:09 Цитировать Кстати, на форуме уже очень много раз поднимались аналогичные темы Как это ты так мягко сказал. Если честно, уже задолбали эти темы по несколько раз в месяц.Название: Re: Проблемы с кодировкой Отправлено: Edynchik от Апрель 15, 2011, 12:36 Как толково преобразовать QChar в int? Суть в том что есть шестанциричная строка Qstring, преобразуется в массив QChar для посимвольного сложения.
Название: Re: Проблемы с кодировкой Отправлено: mutineer от Апрель 15, 2011, 12:47 Как толково преобразовать QChar в int? Суть в том что есть шестанциричная строка Qstring, преобразуется в массив QChar для посимвольного сложения. int QChar::digitValue () const не то? Название: Re: Проблемы с кодировкой Отправлено: Edynchik от Апрель 15, 2011, 13:01 Цитировать int QChar::digitValue () const не то? да...точно...спасибо...только шестнадцатиричные числа определяются как -1...можно с этим что нибудь сделать? Название: Re: Проблемы с кодировкой Отправлено: blood_shadow от Апрель 15, 2011, 19:06 Цитировать int QChar::digitValue () const не то? да...точно...спасибо...только шестнадцатиричные числа определяются как -1...можно с этим что нибудь сделать? пробей по таблице числовых кодов и сравни с тем что лежит в твоем чаре, вот и все Название: Re: Проблемы с кодировкой Отправлено: Edynchik от Апрель 18, 2011, 08:07 ну да...сделал нечто подобное...спасибо всем)
Название: Re: Проблемы с кодировкой Отправлено: Edynchik от Май 25, 2011, 10:49 а еще...Подскажите пожалуйста...если используешь линукс для вывода русских букв на экран надо писать нечто:
Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R")); Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251")); Название: Re: Проблемы с кодировкой Отправлено: kambala от Май 25, 2011, 11:02 линукс разве не понимает UTF-8?
Название: Re: Проблемы с кодировкой Отправлено: Edynchik от Май 25, 2011, 11:12 линукс разве не понимает UTF-8? онимает навенрное,только я же вывожу русские буквы в textEdit,а когда ставишь UTF-8 пишет кракозябры...Название: Re: Проблемы с кодировкой Отправлено: blood_shadow от Май 25, 2011, 13:14 линукс разве не понимает UTF-8? онимает навенрное,только я же вывожу русские буквы в textEdit,а когда ставишь UTF-8 пишет кракозябры...QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); Название: Re: Проблемы с кодировкой Отправлено: Edynchik от Май 25, 2011, 13:47 Ну незнаю насчет UTF-16,но в МСВС в TextEdit русские буквы корректно выводятся только в KOI8-R. Но суть в том что если я сначала пишу
Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R")); Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251")); Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251")); Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R")); Название: Re: Проблемы с кодировкой Отправлено: blood_shadow от Май 25, 2011, 14:21 Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251")); а вот Windows-1251 там есть, посмотри в ассистанте QTextCodec Название: Re: Проблемы с кодировкой Отправлено: LisandreL от Май 25, 2011, 15:23 незнаю где ты такую кодировку нашел, но я ее в supported encodings ненашел, Это одно и тоже.а вот Windows-1251 там есть, посмотри в ассистанте QTextCodec Название: Re: Проблемы с кодировкой Отправлено: Fat-Zer от Май 25, 2011, 15:37 Это одно и тоже. а кьют точно знает об этом?Название: Re: Проблемы с кодировкой Отправлено: GreatSnake от Май 25, 2011, 15:43 Точно.
Название: Re: Проблемы с кодировкой Отправлено: Edynchik от Май 26, 2011, 08:17 да проблема не в том что кто про какую кодировку знает,а в том что
Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("")); |