Борьба с крякозябликами. Часть вторая

Еще один случай, который может возникнуть при переводе
  1. Оффлайн

    Автор темы

    Nexus

    Звание: Бывалый

    Администраторы

    Сообщений: 268

    Создано тем: 17

    Рейтинг: 5

    Еще один примерчик. Здесь уже пришлось вникать в работу шрифтов. Сильно не расписывал, там и так все вроде понятно. По сути: описывается другой подход к возникшей проблеме при переводе программы, которая обращается не к ветке реестра с кодовыми страницами, а к ветке описания шрифтов.

    Скачать руководство:


    Внимание! У вас нет прав для просмотра скрытого текста.
    19 мая 2013 - 00:40 / #1
  2. Оффлайн

    WYLEK

    Звание: Мастер

    Админ

    Сообщений: 693

    Создано тем: 178

    Рейтинг: 9

    Забрал. Очень познавательно. Потому что пошли стадом biggrin программы, где придется это применять.

    19 мая 2013 - 15:57 / #2
  3. Оффлайн

    Dodakaedr

    Звание: Прибывший

    Проверенные

    Сообщений: 19

    Создано тем: 0

    Рейтинг: 1

    Борьба с крякозябликами. Часть вторая



    Кто-то работал уже с программами от ZC? Имеется у них программа ZC Video Converter (Ссылка) с поддержкой русского языка, но он частично отображается крякозябликами. Изменения в реестре положительного результата не дали. Что можете посоветовать?
    Сообщение отредактировал WYLEK 29 июля 2018 - 18:09
    29 апреля 2016 - 19:07 / #3
  4. Оффлайн

    Leserg

    Звание: Эксперт

    Команда сайта.

    Сообщений: 478

    Создано тем: 64

    Рейтинг: 6

    Статья уже давно написана: Логический шрифт (Исправляем некорректное отображение кириллицы). Как раз ваш случай. biggrin

    Кто ищет, тот всегда найдет!

    30 апреля 2016 - 09:36 / #4
  5. Оффлайн

    Dodakaedr

    Звание: Прибывший

    Проверенные

    Сообщений: 19

    Создано тем: 0

    Рейтинг: 1

    интересно, почему же на 7 не работает??

    Сообщение отредактировал WYLEK 29 июля 2018 - 18:03
    30 апреля 2016 - 20:28 / #5
  6. Оффлайн

    gazon01

    Звание: Мастер

    Администраторы

    Сообщений: 535

    Создано тем: 28

    Рейтинг: 7

    интересно, почему же на 7 не работает?


    я реестр ещё в 2009 правил, тогда никто в программах шрифт не исправлял, а все патчами пользовались, и вкладывали в архив с переводом разные "хитрые" файлики.
    посмотри .exe в редакторе, там три или четыре вида шрифтов, название одного из них я ещё нигде не встречал.
    на твоих скринах не те шрифты выделены

    "Возможно всё! На невозможное просто требуется больше времени."
    Мудрец из Шангри Ла

    1 мая 2016 - 07:09 / #6
  7. Оффлайн

    Leserg

    Звание: Эксперт

    Команда сайта.

    Сообщений: 478

    Создано тем: 64

    Рейтинг: 6

    интересно, почему же на 7 не работает?


    Потому что вы делаете подмену румынской кодировки, которая в ZC Video Converter и близко не пробегала. В статье "Борьба с крякозябликами. Часть вторая" разобран частный случай. Вы же почему-то решили, что он является универсальным, и насилуете реестр Windows. Впрочем дело ваше, продолжайте в том же духе. biggrin

    Кто ищет, тот всегда найдет!

    1 мая 2016 - 14:41 / #7
  8. Оффлайн

    Alecs962

    Звание: Прибывший

    Знаток

    Сообщений: 49

    Создано тем: 4

    Рейтинг: 1

    Здравствуйте. Есть программа DiskCheckup (портатив) http://file.sampo.ru/dzg8nk/
    Вся локализация вынесена во внешние файлы localization.txt, SMARTDesc.csv и SysInfo_localization.txt. С файлами localization.txt и SysInfo_localization.txt проблем нет, а в SMARTDesc.csv находится всплывающая подсказка атрибутов SMART, проблема такова: видим первый атрибут - Raw Read Error Rate (Частота ошибок чтения), переводим строку в SysInfo_localization.txt и подсказка в виде синего значка исчезает.


    Нужно чтобы в SMARTDesc.csv в строке "1,Raw Read Error Rate,-1,Stores..." между 1 и 2-й запятой было один набор букв, что и в SysInfo_localization.txt, только тогда значок появится. С набором англицких букв это проходит, но при переводе в файле SMARTDesc.csv появляются кракозябры.



    Кодировка файлов разная - SMARTDesc.csv в UTF-8, а остальные в Юникоде. Есть ли решение этой проблемы?
    Сообщение отредактировал WYLEK 29 июля 2018 - 18:11
    9 февраля 2017 - 18:08 / #8
  9. Оффлайн

    Leserg

    Звание: Эксперт

    Команда сайта.

    Сообщений: 478

    Создано тем: 64

    Рейтинг: 6

    Цитата: Alecs962
    ... при переводе в файле SMARTDesc.csv появляются кракозябры... Кодировка файлов разная - SMARTDesc.csv в UTF-8, а остальные в Юникоде. Есть ли решение этой проблемы?


    Корень проблемы находится в исполняемом файле программы — DiskCheckup.exe. Считывание файла SMARTDesc.csv выполняется в кодировке ANSI. Затем строки преобразуются в кодировку Unicode по упрощенному алгоритму. Как известно, коды символов в диапазоне 00-7F (латиница) для таблиц ASCII и Unicode абсолютно одинаковые, поэтому в программе код символа в кодировке Unicode получается дополнением кода символа в кодировке ASCII нулевым байтом. Например, символ 'W' в наборе ASCII имеет код 0х57, а в наборе Unicode — 0х5700. В то время как, например, кириллический символ 'М' имеет код 0хСС, то по упрощенному алгоритму он превращается в символ Unicode вида 0хСС00. Но на самом деле код русской буквы 'М' в кодировке Unicode должен быть 0х1С04.

    Таким образом, чтобы избавиться от "кракозябр", необходимо модифицировать алгоритм перекодировки. Что мы сделаем: добавляем проверку вхождения кода символа в диапазон 7F-FF. Если это условие выполняется, то по упрощенному алгоритму конвертируем код символа в кодировку Unicode для диапазона кириллицы.

    Данные патча для файла DiskCheckup.exe v3.4.1003.0 (в отладчике x64Dbg):


    Далее, кодировку файла SMARTDesc.csv необходимо изменить на ANSI (Windows-1251), обязательно. Также, при переводе содержимого файла, все строки с подсказками нужно заключить в двойные кавычки ( " ). Если внутри строки какое-либо выражение должно быть указано в кавычках, то вместо двойных кавычек используйте одинарные ( ' ) или удвоенные одинарные ( '' ). Но ни в коем случае не используйте альтернативные варианты кавычек, типа « » или “ ”. Эти символы находятся во второй половине таблицы ASCII и при конвертации (по упрощенной схеме) в Unicode, для диапазона кириллицы, превращаются в "мусор".

    В результате, если все сделано правильно, вы получите корректное отображение символов кириллицы для текста подсказок.

    Борьба с крякозябликами. Часть вторая
    Сообщение отредактировал WYLEK 29 июля 2018 - 18:15

    Кто ищет, тот всегда найдет!

    12 февраля 2017 - 14:35 / #9
  10. Оффлайн

    Alecs962

    Звание: Прибывший

    Знаток

    Сообщений: 49

    Создано тем: 4

    Рейтинг: 1

    Цитата: Leserg (12.02.2017, 15:35)
    Корень проблемы находится в исполняемом файле программы.....

    Огромное СПАСИБО Вам! Честно говоря именно Ваш ответ я ждал, в заковыристых ситуациях, продолжением которых идет ковыряние в коде программы только Ваша подсказка помогает решить проблему.
    12 февраля 2017 - 16:13 / #10

Статистика форума, пользователей онлайн: 3 (за последние 20 минут)

Создано тем
717
Всего сообщений
5336
Пользователей
13955
Новый участник
Svaer

Добро пожаловать на WYLEK.RU!

Для того чтобы стать полноценным участником нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запись!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт