Название: Французская буква Отправлено: Igors от Май 01, 2014, 10:03 Добрый день
Аттач (сверху вниз): что пишу, как рисуется в Qt и как это в hex. Исходный текст приходит как С строка. Вывод средствами ОС - все норм (с теми же шрифтами), но Qt рисует какую-то фигню (причем страшно медленно). Не долго думая поменял на обычное "е", но получил замечание (типа неграмотный). Как порешать? Спасибо Название: Re: Французская буква Отправлено: Old от Май 01, 2014, 10:07 В какой кодировке исходный файл?
Название: Re: Французская буква Отправлено: Igors от Май 01, 2014, 10:13 В какой кодировке исходный файл? А я и не знаю :) Наверное UTF-8. Исходная строка сишная, 1 байт на символ, а эта буква 2 байта, но рисуется норм и в любом текстовом редакторе и если вывести ее средствами ОСНазвание: Re: Французская буква Отправлено: Old от Май 01, 2014, 10:18 А я и не знаю :) Наверное UTF-8. Исходная строка сишная, 1 байт на символ, а эта буква 2 байта, но рисуется норм и в любом текстовом редакторе и если вывести ее средствами ОС Попробуйте так:Код
Название: Re: Французская буква Отправлено: Igors от Май 02, 2014, 05:13 Попробуйте так: Да, так все работает, Но тут начались приключения. Проверил на тестовом примере - все норм. Вставил в приложение - не то. Разбираюсь: по каким-то (необъяснимым) причинам исходная сишная строка разная, т.е. copy/paste меняет символ. Методом втыка нашел что вот такКод
Код Работает напрямую. Но насколько это правильно/грамотно? Спасибо Название: Re: Французская буква Отправлено: Old от Май 02, 2014, 07:43 Наверное где то в main есть строки QTextCodec::setCodecForXXX?
Название: Re: Французская буква Отправлено: Igors от Май 02, 2014, 08:35 Методом втыка нашел что вот так Ан нет, это работает только на OSX, но не на Вындоуз. Причем "нормальная" строка (что рисуется как надо) имеет s[1] = 0xE9, но на Вындоуз я не могу подсунуть этот символ из С строки.Код Работает напрямую. Наверное где то в main есть строки QTextCodec::setCodecForXXX? Нету, пробовал добавлять - не имеет эффекта (хотя должно)Название: Re: Французская буква Отправлено: kambala от Май 02, 2014, 13:13 можно код символа записать через \uXXXX либо сделать его %1 и в arg() создавать через QChar(0xXXXX)
Название: Re: Французская буква Отправлено: Igors от Май 02, 2014, 14:04 можно код символа записать через \uXXXX Не выходит на Вындоуз, QString(char *) его замещает (хз почему)либо сделать его %1 и в arg() создавать через QChar(0xXXXX) Так да, если str[1] = 0xE9 (для QString) работает. Но это латка для "именно этой" строки, как обобщить?Название: Re: Французская буква Отправлено: mitrich от Июнь 06, 2014, 16:12 Код
Название: Re: Французская буква Отправлено: sergek от Июнь 07, 2014, 11:16 Исходный текст приходит как С строка. Я бы сделал так: строку перевел бы в QByteArray, создал бы кодек с кодировкой C-строки (ее все же нужно знать или подобрать), с помощью этого кодека преобразовал в Unicode. |