Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: Igors от Апрель 22, 2017, 13:48



Название: Как узнать исходную кодировку?
Отправлено: Igors от Апрель 22, 2017, 13:48
Добрый день

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

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

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

Спасибо


Название: Re: Как узнать исходную кодировку?
Отправлено: kambala от Апрель 22, 2017, 15:31
- нагуглить какая была системная кодировка в то время (явно что-то типа кодовой страницы)
- найти онлайн сервис, распознающий кодировки

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


Название: Re: Как узнать исходную кодировку?
Отправлено: Day от Апрель 23, 2017, 08:40
Может быть это поможет?
http://apikabu.ru/img_n/2012-09_2/m38.png


Название: Re: Как узнать исходную кодировку?
Отправлено: Igors от Апрель 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  ??? Верно ли я действую?