LG.BALUKATION's Weblog

Ничего, это тоже кое-что… А при желании из него можно сделать что угодно

Русский в вайне

Posted by LG.BALUKATION на 2008/07/05

Вот не так давно зарелизило wine 1.0, после чего он почти моментально обновился до wine 1.1.0, так что многие даже наверно и не успели поюзать релиз (как например я).

Среди прочих вкусностей там были обещаны исправленения багов с NLS. Что касается русского, то эти были обычно сводятся к двум штукам, причём наличие одного не сключает наличие и другого.

Штука первая — вместо кириллицы почти везде видны «квадратики» Это проблема шрифта — с некоторых пор, wine включает в себя шрифт Tahoma (так называется стандартный шрифт в Windows, используемый когда прога явно не указывает каким шрифтом рисовать текст), вот только поставляемый с wine вариант шрифта не содержит в себе символов кириллицы. Некоторые предпочитают копировать из венды шрифты, хотя можно подменить его и на какой-нить другой «родной». Интересующие нас файлы — /usr/share/wine/fonts/tahoma*. Третьи лица просто удаляют эти файлы — тоже может прокатить.

Штука вторая — иногда вместо кириллицы видны «вопросики» (например, в статусах в QIP). Это проблема кодировки — проги тож далеко не всегда сами задают в какой кодировке следует воспринимать передаваемые ими строки, полагаясь на правильное значение «по-умолчанию». Иногда (например, поговаривают, что в 64-битной версии Gentoo такого нет, однако в 32-битной оно часто встречается), wine оставляет эту кодировку стандартным значением (1252 — западная европа). Решений несколько, но все они сводятся к правке реестра — можно подправить локальную копию, а можно изменить и глобальную (чтоб все новые копии пользовательских ~/.wine уже были правильными). В любом случае, следует удостовериться, что:
в HKCU\Software\Wine\Fonts ключ Codepages содержит 1251,866
в HKLM\System\CurrentControlSet\Control\Nls\Codepage ключи ACP и OEMCP содержат 1251 и 866 соответственно.

Суть этих изменений — установка русских кодовых страниц. Венда, в отличии от большенства нормальных систем, использует в разных «частях» системы разные кодировки и извратские схемы преобразованеия между ними. Для графического интерфейса в россии применяется кодовая страница 1251 (в wine иногда установлено значение по-умолчанию 1252 — кодовая страница для западной европы, следует найти вышепоказанные ключи и удостоверится, что там стоят настройки для россии), а для консоли применяется кодовая страница 866 (по-умолчанию может стоять что-нить вроде 437 — англицкий). При всём этом, WinNT уже больше десяти лет использует Unicode для всех внутренних операций со строками!

Реклама

комментария 2 to “Русский в вайне”

  1. Lucky said

    Не перейдет винда на юникод полностью никогда, это не выгодно.
    Пусть линуксоиды мучаются с тегами mp3 и текстами/html/почтой в cp1251,
    а M$ будет говорить — «у нас все работает» :)

  2. NT API уже больше 10 лет работает тока с юникодом, его поддержка так же давно доступна в самих стандартах на скажем С/С++ и мелкомягкие более-менее следуют этим стандартам (иначе их визуал студию никто не тока не покупал бы, но даж и не воровалиб %). Так что теперь это давно уже выбор программера — будет он юзать «простую» или «широкую» строку в своей разработке и к системе это не привязано.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s