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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как узнать исходную кодировку?  (Прочитано 5271 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Апрель 22, 2017, 13:48 »

Добрый день

В старых текстах нативных ресурсов встречаются такие бяки

0xC6 - значок "дельта"
0xB1 - значок "плюс минус"
0xAA - значок "trademark"

Теперь когда я создаю QString из исходной сишной строки (utf-8) эти символы не опознаются (все печатаются вопросиком). Как мне их перевести в юникод?

Спасибо
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Апрель 22, 2017, 15:31 »

- нагуглить какая была системная кодировка в то время (явно что-то типа кодовой страницы)
- найти онлайн сервис, распознающий кодировки

или там вообще произвольные кодировки могут быть?
Записан

Изучением 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
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #2 : Апрель 23, 2017, 08:40 »

Может быть это поможет?
http://apikabu.ru/img_n/2012-09_2/m38.png
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Апрель 23, 2017, 09:16 »

Может быть это поможет?
http://apikabu.ru/img_n/2012-09_2/m38.png
Свою не увидел, но все равно спасибо за участие

- нагуглить какая была системная кодировка в то время (явно что-то типа кодовой страницы)
- найти онлайн сервис, распознающий кодировки
Т.е. "метод втыка". Так и сделал, примерно через час обнаружил что подходит "MacRoman" (она же "Apple Roman")

или там вообще произвольные кодировки могут быть?
Да, именно. Формат данных ресурсов не обязывает к какой-то определенной кодировке, просто строки байт-символ и все. В apple доке мелькает, мол, "рекомендуется в UTF-8", ну свои ресурсы я так и писал. Теперь на чтении надо как-то учесть что могут быть "те и эти". Сделал так

- беру QTextCodec для UTF-8 и конвертирую в юникод и обратно, если совпало с оригиналом - все гуд
- иначе делаем то же самое для кодека MacRoman
- если и это не прошло - возвращаем fromLocal8Bits (нехай сам разбирается)

Обратил внимание что есть метод  QTextCodec::canEncode, но у меня он почему-то возвращает true с UTF-8  Непонимающий Верно ли я действую?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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