Windows 1251 и линукс

Windows 1251 и линукс

Локаль — это набор параметров, включая набор символов, язык пользователя, страну, часовой пояс, а также другие предустановки, которые пользователь ожидает видеть в пользовательском интерфейсе. В операционных системах Linux в качестве локалей по-умолчанию используются кодировки Unicode, что, несомненно, очень удобно и универсально. Но иногда возникают ситуации, что отдельно взятое приложение необходимо запустить с кодировкой CP1251 (например win32-программу через Wine). О том как это сделать будет рассказано в этой статье.

Все нижеописанное актуально для дистрибутивов Ubuntu, а также будет работать во всех остальных основанных на Debian и RedHat системах. Итак, для начала нам стоит выяснить какие локали уже установлены у вас в системе, для этого введите команду:

Она даст вывод всех установленных локалей. Если в этом списке помимо различных вариантов UTF уже присутствует ru_RU.CP1251, то этап генерации локали вы можете пропустить и перейти сразу к команде запуска приложения. Если же ru_RU.CP1251 вы там не обнаружили, то придется ее сгенерировать. В Ubuntu для этого надо отредактировать файл /var/lib/locales/supported.d/ru:

sudo nano /var/lib/locales/supported.d/ru

В других дистрибутивах файл русской локали может находиться по другим путям.
В этот файл последней строкой добавьте:

Сохраните изменения и приступайте к генерации локалей командой:

Generation complete.
Теперь любое приложение вы можете запустить в windows-кодировке CP1251. Для этого перед командой запуска приложения достаточно добавить LC_ALL=ru_RU.CP1251 , например:

Что запустит текстовый редактор nano в windows-кодировке.
Чтобы запустить таким образом windows-приложение через эмулятор Wine, нужно будет выполнить команду такого типа:

env LC_ALL=ru_RU.CP1251 wine «C:\Program Files\1Cv77\BIN\1cv7.exe»

Если подобный способ запуска программы решает проблемы кодировки, то можете смело создавать кнопку быстрого запуска, куда будет достаточно просто поместить вашу команду.

Источник

Windows 1251 и линукс

Все что нужно сделать — это скачать найденую в сети CP1251-locale для FreeBSD и установить в систему:

Примечание: Забудьте про указанную выше локаль CP1251 и берите родную от FreeBSD, появилась RELENG_4 и в Current, ну или готовую из RELENG_4.

# tar zxvf FreeBSD-cp1251.tar.gz # cd cp1251/ # less README # make install

Использование locale CP1251 на консоли и виртуальных терминалах, вместо KOI8-R

1) установка locale ru_RU.CP1251 появилась в RELENG_4 (после 4.8-RELEASE) и в HEAD (после 5.1-RELEASE) взять можно уже выдранную оттуда(готовую): a) NewCP1251.tgz или выдрать готовую из одного из последних снапшотов(live-cd): b) ftp://current.freebsd.org/pub/FreeBSD/snapshots/i386/ или через cvsweb: c) http://www.freebsd.org/cgi/cvsweb.cgi/src/share/?only_with_tag=RELENG_4 2) настройка - /etc/login.conf: russian|Russian Users Accounts:\ :charset=CP1251:\ :lang=ru_RU.CP1251:\ :tc=default: или можно оставить оригинал для koi8-r поддержки и добавить класс win: # # Russian Users Accounts. Setup proper environment variables. # russian|Russian Users Accounts:\ :charset=KOI8-R:\ :lang=ru_RU.KOI8-R:\ :tc=default: win|Russian Windows Users Accounts:\ :charset=CP1251:\ :lang=ru_RU.CP1251:\ :tc=default: не забывать что пятое поле в master.passwd (vipw/adduser: man 5 passwd, man 5 vipw, man adduser и less /etc/adduser.conf) и есть login_class. Если мы хотим чтобы все default настройки были для CP1251, можем сделать: - /etc/profile (Bourne-Shell/Bash): . LANG=ru_RU.CP1251; export LANG LC_ALL=ru_RU.CP1251; export LC_ALL MM_CHARSET=CP1251; export MM_CHARSET . - /etc/csh.login (Csh/Tcsh): . setenv LANG ru_RU.CP1251 setenv MM_CHARSET CP1251 . либо у пользователя в $HOME, в .profile/.bash_profile (shell/bash), в .login (csh/tcsh). 3) консоль и виртуальные терминалы (фонты и клавиатура) - /etc/rc.conf: . # клавитурная мапа, найдена в интернете # ru.cp1251.kbd # положить в /usr/share/syscons/keymaps keymap=ru.cp1251 # можно не использовать, by default клавиша "CAPS LOCK" #keychange="61 ESC[K" # послоьку фонты cp866 самые удачные, используем их и скринмапу из cp866 в 1251 # найдено в сети win2cpp866.scm # положить в /usr/share/syscons/scrnmaps scrnmap="win2cpp866" font8x16=cp866-8x16 font8x14=cp866-8x14 font8x8=cp866-8x8 . прим: в /etc/ttys должно быть ttyv0 "/usr/libexec/getty Pc" cons25r on secure . ttyv5 "/usr/libexec/getty Pc" cons25r on secure . и так для всех используемых виртуальных экранов Если верхнее у вас прежде не было сделано, то чтобы изменения в /etc/ttys вступили в силу, необходимо выполнить команду: # kill -HUP 1 Прим: если у вас в каких-то приложениях использующих gettext, вместо русских ерунда, то создавайте сами эти хелпы или каких их назвать, в кодировке cp1251, уверен что все gettext сделаны в koi8r(возможно с дублем в cp1251), тут уж смотрите и делайте сами если нужно.

Для проверки локализации в html/php, смотри пункт Проверка локализации

Читайте также:  Средства разработки приложений linux

Установка CP1251 locale в Linux:

Чтобы понять что, как и где создает утилита localedef, обязательно прочитайте man localedef, потому что в разных linux’ах locale распологается либо в /usr/share/locale/, либо /usr/lib/locale/. Вся локаль, включая 1251 уже содержится в i18n, необходимо лишь сгенерить из нее LC которая ляжет в /usr/share/locale/ru_RU.CP1251 или в /usr/lib/locale/ru_RU.CP1251 (зависит от типа Linux), достаточно выполнить команду:

localedef -c -i ru_RU -f CP1251 ru_RU.CP1251 после чего будет создана директория ru_RU.cp1251, как сказано выше: /usr/share/locale/ru_RU.cp1251 или /usr/lib/locale/ru_RU.cp1251 Все. Теперь просто переименуйте в ru_RU.CP1251 и проверьте наличие в системе: locale -a | grep ru_RU

Для проверки локализации в html/php, смотри пункт Проверка локализации

Можете воспользоваться моими заготовками для проверки html и php:

  • .htacces &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp Скачать wget’ом, затем cp htaccess .htaccess
  • winlavr.php3 &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp Скачать wget’ом, затем cp winlavr.cp1251 winlavr.php3
  • текст в cp1251 для winlavr.php3 Скачать wget’ом.
  • winlavr.php3 — проверка преобразования/Windows-1251 кодировки — верхний/нижний регистр и стремные буквы

необходимо скачать указанные выше файлы .htaccess и winlavr.php3, разместить на WWW или в домашней странице и посмотреть результат.

Есть много разных CP1251 фонтов для X11, я таскаю за собой следующие:

Разворачиваете нужные или подходящие вам в /usr/X11R6/lib/X11/fonts, добавляете их в XF86Config, например:

. # FontPath "/usr/X11R6/lib/X11/fonts/local/" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/misc/" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi/" #--lavr Windows-CP1251 fonts FontPath "/usr/X11R6/lib/X11/fonts/win-micex/misc/" FontPath "/usr/X11R6/lib/X11/fonts/win-micex/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/win-micex/100dpi/" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/CID/" FontPath "/usr/X11R6/lib/X11/fonts/PEX/" FontPath "/usr/X11R6/lib/X11/fonts/TTF/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" FontPath "/usr/local/share/koi8r-ps/" # .
xset +fp /usr/X11R6/lib/X11/fonts/win-micex/misc xset +fp /usr/X11R6/lib/X11/fonts/win-micex/75dpi xset +fp /usr/X11R6/lib/X11/fonts/win-micex/100dpi

теперь смело можно смотреть файлы в Windows-CP1251 кодировке, запуская, например xterm с понравившимся фонтом:

Читайте также:  Connect to ipsec vpn linux

для переключения раскладок в X11 можно воспользоваться портами FreeBSD:

Источник

Как сменить locale в Debian или пишем кириллицей в консоли linux

Я знаю что кириллица в логах Linux – это самый страшный грех для айтишника, но иногда это просто необходимость. Одна из таких необходимостей возникает при создании централизованного хранения log-файлов различных операционных систем. Microsoft всегда в своих log`ах применяет кириллицу и поэтому если мы хотим получать log-файлы и от Win-серверов, то стоит смириться, что в log`ах будет кирилица.

Для того, чтобы эти логи нормально отображались нам и нужно явно указать locale в Debian, Ubuntu или какой Linux-дистрибутив Вы используете.

Проблемы отображения кириллических символов в Linux не существует. Есть проблема у русской версии Windows. Весь мир и Linux в том числе, работает в кодировке UTF -8, когда русская версия Microsoft использует CP1251. Такая ситуация сложилось исторически благодаря компании «Парус», которая взяла на себя обязательства по локализации всех операционных систем Windows. Выбрали они почему-то кодировку CP1251, которая применяется до сих пор. Использование этой «неправильной» кодировки в наши дни обусловлено сохранением совместимости всех версий ОС.

Чтобы добавить кириллицу, чтобы Linux сервер нормально отображал русские буквы, нужно объяснить ему, что необходимо работать в той же кодировке, что и Windows.

Для того, чтобы управлять локалью в Linux, необходим пакет locales, который должен быть у Вас установлен. В большинстве случаев пакет locales уже будет у Вас установлен, поэтому для проформы просто проверяем этот факт.

sudo apt-get install locales

Посмотреть установленную locale linux можно командой:

Для ручного указания кодировке в Linux Mint, Debian или ubuntu нужно отредактировать конфигурационный файл /etc/locale.gen :

Читайте также:  Linux run on socket

Команду sudo не нужна, если Вы зашли как суперпользователь. Это относится к Linux Mint и Ubuntu, так как Debian ничего не знает о команде sudo.

В этом файле необходимо найти строчку и расскомментировать с той locale, которая Вам нужна. Для добавления кириллицы нужно раскомментировать строчки с UTF-8 или CP1251 .

    если хотим указать, чтобы ОС работала в UTF -8, раскомментирум:

Стоит обратить внимание, что первые 2 символа (в нашем примере это ru) говорят нам о языке локализации (кириллица).

После этого переопределяем настройки locales командой:

Команда locale-gen позволяет запустить скрипт /etc/locale.gen и перечитывает все кодировки для консоли.

Чтобы увидеть кириллицу в консоли Linux, остается только перелогиниться.

Комментарии

Попробую применить ваши методы, не знаю, что из этого выйдет, но просмотрим.

День эмоджи

Чтобы получать уведомления о всех исторических IT-событиях —

Если Вы используете материал моего блога, то будьте добры поставьте ссылку.

Источник

Оцените статью
Adblock
detector