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

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

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

Спасибо,
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
при инициализации экземпляра класса работает хорошо, но вот еще один попутный вопрос: Как толково преобразовать QChar в int? Суть в том что есть шестанциричная строка Qstring, преобразуется в массив QChar для посимвольного сложения.
« Последнее редактирование: Апрель 15, 2011, 09:55 от Edynchik » Записан
BRE
Гость
« Ответ #16 : Апрель 15, 2011, 09:48 »

Спасибо,
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
Не надо так делать.
Лучше разберись один раз как работать с кодировками, что и когда  во что преобразовывается, как использовать локализации и т.д.
В дальнейшем ты избавишь себя, а может и других разработчиков сопровождающих твой код, от не нужных проблем.
Кстати, на форуме уже очень много раз поднимались аналогичные темы.  Подмигивающий
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #17 : Апрель 15, 2011, 10:09 »

Цитировать
Кстати, на форуме уже очень много раз поднимались аналогичные темы
Как это ты так мягко сказал. Если честно, уже задолбали эти темы по несколько раз в месяц.
Записан

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

Как толково преобразовать QChar в int? Суть в том что есть шестанциричная строка Qstring, преобразуется в массив QChar для посимвольного сложения.

Записан
mutineer
Гость
« Ответ #19 : Апрель 15, 2011, 12:47 »

Как толково преобразовать QChar в int? Суть в том что есть шестанциричная строка Qstring, преобразуется в массив QChar для посимвольного сложения.

int QChar::digitValue () const
не то?
Записан
Edynchik
Гость
« Ответ #20 : Апрель 15, 2011, 13:01 »

Цитировать
int QChar::digitValue () const
не то?

да...точно...спасибо...только шестнадцатиричные числа определяются как -1...можно с этим что нибудь сделать?
« Последнее редактирование: Апрель 15, 2011, 14:12 от Edynchik » Записан
blood_shadow
Гость
« Ответ #21 : Апрель 15, 2011, 19:06 »

Цитировать
int QChar::digitValue () const
не то?

да...точно...спасибо...только шестнадцатиричные числа определяются как -1...можно с этим что нибудь сделать?
что-то я не нашел, напиши свою ф-цию, возьми unicode () с каждого символа(числовой код),
пробей по таблице числовых кодов и сравни с тем что лежит в твоем чаре, вот и все
Записан
Edynchik
Гость
« Ответ #22 : Апрель 18, 2011, 08:07 »

ну да...сделал нечто подобное...спасибо всем)
Записан
Edynchik
Гость
« Ответ #23 : Май 25, 2011, 10:49 »

а еще...Подскажите пожалуйста...если используешь линукс для вывода русских букв на экран надо писать нечто:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R"));
...но в этой же проге чтобы прочитать файл из win(с кодировкой CP1251) надо написать нечто:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));
...но не работает...читаются козяблики...подскажите как исправить или по другому надо делать?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #24 : Май 25, 2011, 11:02 »

линукс разве не понимает 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
Edynchik
Гость
« Ответ #25 : Май 25, 2011, 11:12 »

линукс разве не понимает UTF-8?
онимает навенрное,только я же вывожу русские буквы в textEdit,а когда ставишь UTF-8 пишет кракозябры...
Записан
blood_shadow
Гость
« Ответ #26 : Май 25, 2011, 13:14 »

линукс разве не понимает UTF-8?
онимает навенрное,только я же вывожу русские буквы в textEdit,а когда ставишь UTF-8 пишет кракозябры...
textEdit работает в UTF-16, если у тебя текст в UTF-8 тебе надо:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
Записан
Edynchik
Гость
« Ответ #27 : Май 25, 2011, 13:47 »

Ну незнаю насчет UTF-16,но в МСВС в TextEdit русские буквы корректно выводятся только в KOI8-R. Но суть в том что если я сначала пишу
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R"));
, то после 
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));
не выполняется...и при разборе файла windows при чтении русских букв появляются кракозябры, и наооборот если сначала 
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));
и прочитать файл, то потом
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R"));
не сработает и выдаст кракозябры...вот в чем дело...
Записан
blood_shadow
Гость
« Ответ #28 : Май 25, 2011, 14:21 »

Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));
незнаю где ты такую кодировку нашел, но я ее в supported encodings ненашел,
а вот Windows-1251 там есть, посмотри в ассистанте QTextCodec
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #29 : Май 25, 2011, 15:23 »

незнаю где ты такую кодировку нашел, но я ее в supported encodings ненашел,
а вот Windows-1251 там есть, посмотри в ассистанте QTextCodec
Это одно и тоже.
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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