на главную обучение сертификация статьи литература ссылки гостевая книга
  Список статей Оглавление Текст статьи  

Java: Русские буквы и не только...

Автор:Астахов Сергей
Создан:03.06.2003


21. Руссификация Java под Linux

   Скажу сразу - я с Linux не работаю, а приведённая здесь информация получена от читателей данного описания. Если Вы найдёте неточность или захотите дополнить - напишите мне.

   При кириллизации JVM в Linux существует две параллельных проблемы:
  1. Проблема вывода кириллицы в GUI-компонентах

  2. Проблема ввода кириллицы с клавиатуры (в X11)
   Проблему вывода можно решить таким способом (данный алгоритм прислал Artemy E. Kapitula):
  1. Установить в X11 нормальные шрифты ttf из Windows NT/2000. Я бы рекомендовал Arial, Times New Roman, Courier New, Verdana и Tahoma - причем подключать их лучше не через сервер шрифтов, а как каталог с файлами.

  2. Добавить следующий файл font.properties.ru в каталог $JAVA_HOME/jre/lib
   Проблема ввода решается примерно таким способом (данный алгоритм прислал Михаил Иванов):

Настройка ввода русских букв приводится для следующей конфигурации:
  • Mandrake Linux 7.1
  • XFree86 3.3.6
  • IBM Java 1.3.0 (релизная)
Проблема:
   IBM Java 1.3 не дает вводить русские буквы (видны как крокозябры) при том что на лейблах и в менюхах их видно.

Причина:
   использование XIM ( -> xkb) в AWT (это не есть плохо само по себе, просто с такими штуками нужно обращаться осторожно + некоторые прилады xkb не любят).

Решение:
   Настроить xkb (и локаль (xkb без локали НЕ РАБОТАЕТ!)).

Процедура:
  1. выставляется локаль (где-нибудь типа в /etc/profile или в ~/.bash_profile):
      export LANG=ru_RU.KOI8-R
      export LC_ALL=ru_RU.KOI8-R
    
  2. правится (если это еще не сделано) /etc/X11/XF86Config. В секции Keyboard должно быть примерно следующее:
      XkbKeycodes     "xfree86"
      XkbTypes        "default"
      XkbCompat       "default"
      XkbSymbols      "ru"
      XkbGeometry     "pc"
      XkbRules        "xfree86"
      XkbModel        "pc101"
      XkbLayout       "ru"
      XkbOptions "grp:shift_toggle"  #переключение 2-мя шифтами
      #XkbOptions "grp:caps_toggle"  #переключение caps-lock'ом
    
    примечание: такая настройка xkb не совместима с xrus (и ему подобными типа kikbd) а посему с ними придется распрощаться.

  3. перезапускаются X-ы. Нужно проверить чтобы все работало (типа русские буковки в терминале и приложениях).

  4. файл font.properties.ru копируется в $JAVA_HOME/jre/lib

  5. файл fonts.dir копируется в $JAVA_HOME/jre/lib/fonts

  6. cd $JAVA_HOME/jre/lib/fonts; rm fonts.scale; ln -s fonts.dir fonts.scale
Теперь русские буквы должны вводиться и выводиться в свинге без проблем.

   Как Вы можете заметить, в описании приводились ссылки на различные файлы font.properties.ru для Linux. Отличаются они тем, какие шрифты будут использованы по умолчанию в AWT и Swing. Соответственно Вам нужно выбрать один и пользоваться им:


назад оглавление дальше