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

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

    Автор темы

    Nexus

    Звание: Новичок

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

    Сообщений: 79

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

    Рейтинг: 2

    Всего балов: 555

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

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


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

    WYLEK

    Звание: Старожил

    Админ

    Сообщений: 292

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

    Рейтинг: 7

    Всего балов: 3965

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

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

    Dodakaedr

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

    Проверенные

    Сообщений: 9

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

    Рейтинг: 1

    Всего балов: 30




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

    Leserg

    Звание: Сталкер

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

    Сообщений: 160

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

    Рейтинг: 3

    Всего балов: -15

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

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

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

    Dodakaedr

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

    Проверенные

    Сообщений: 9

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

    Рейтинг: 1

    Всего балов: 30

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

    30 апреля 2016 - 20:28 / #5
  6. Оффлайн

    gazon01

    Звание: Старожил

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

    Сообщений: 110

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

    Рейтинг: 3

    Всего балов: 1070

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


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

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

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

    Leserg

    Звание: Сталкер

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

    Сообщений: 160

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

    Рейтинг: 3

    Всего балов: -15

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


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

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

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

    Alecs962

    Знаток

    Сообщений: 10

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

    Всего балов: 35

    Здравствуйте. Есть программа 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, а остальные в Юникоде. Есть ли решение этой проблемы?
    9 февраля 2017 - 18:08 / #8
  9. Оффлайн

    Leserg

    Звание: Сталкер

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

    Сообщений: 160

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

    Рейтинг: 3

    Всего балов: -15

    Цитата: 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, для диапазона кириллицы, превращаются в "мусор".

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

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

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

    Alecs962

    Знаток

    Сообщений: 10

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

    Всего балов: 35

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

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

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

---
Создано тем
606
Всего сообщений
1444
Пользователей
13777
Новый участник
mihei78

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

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

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

Войти на сайт