(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Проекты | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация (English)

Инструкция по переходу на UTF-8

Вычислительная система кафедры перешла на использование многобайтовой кодировки UTF-8 для файловых систем и пользовательского окружения вместо однобайтовой кодировки KOI8-R. В данной инструкции рассматриваются типичные проблемы, которые могли возникнуть у пользователей в связи с данным переходом и предлагаются способы их решения (изменения настроек, команды и т.п.).

Основные понятия

Юнико́д, или Унико́д (англ. Unicode™) — стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков.

UTF-8 (от англ. Unicode Transformation Format — формат преобразования Юникода) — кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием текста.

Важно понимать, что один символ в кодировке UTF-8 может быть представлен более чем одним байтом. С этим связано, например, то, что файл, содержащий текст в кодировке UTF-8 будет иметь больший размер по сравнению с файлом, содержащим тот-же текст в кодировке KOI8-R.

Пример: команда wc имеет ключ -c для подсчета байтов и ключ -m для подсчета символов.

$ echo -n "Слово." | wc -c
11
$ echo -n "Слово." | wc -m
6

Имена файлов

Имена файлов были перекодированы автоматически с помощью утилиты convmv:

convmv -r -f koi8-r -t utf-8 --notest <каталог>

Каждому пользователю, в домашнем каталоге которого утилита convmv переименовала хотя бы один файл, был автоматически выслан журнал переименований.

При необходимости можно выполнить обратное преобразование:

 convmv -r -f utf-8 -t koi8-r <файлы и каталоги>

После проверки вывода команды повторить с ключем --notest. Ключ -r включает рекурсивный обход каталогов.

Содержимое файлов

Для того, чтобы преобразовать содержимое файлов из кодировки KOI8-R в кодировку UTF-8 можно воспользоваться командой:

recode koi8-r..utf-8 <filename>

Для потокового перекодирования используется команда:

iconv -f koi8-r <filename>

Редактор Emacs может автоматически распознать кодировку текста при открытии файла. Принудительно задать кодировку открытия или сохранения файла в редакторе Emacs можно следующим образом:

  1. Ввести комбинацию клавиш C-x RET c.
  2. Внизу экрана будет запрошена кодировка, которую вы хотите применить для следующей команды.
  3. Введите команду, которая будет выполнена с применением введенной на предыдущем шаге кодировки, например:
    • комбинацию клавиш для открытия файла: C-x C-f;
    • комбинацию клавиш для сохранения файла: C-x C-s.

Приложения

Текстовый терминал из Windows

Для корректного отображения русского текста при входе на серверы кафедры с помощью терминального клиента PuTTY нужно указать в настройках:

Текстовый терминал из Linux

Если системная локаль не UTF-8, то необходимо запустить X-терминал с поддержкой UTF-8 и выполнить вход по ssh из него.

Если системная локаль UTF-8, то никаких дополнительных действий предпринимать не надо.

Если по какой-то причине при входе по ssh не установились правильно переменные окружения локали (вывод команды locale не содержит строки LANG=ru_RU.UTF-8), то необходимо выполнить команду:

export LANG=ru_RU.UTF-8

WinSCP

Для корректного отображения русских имен файлов:

TEX

Было:

\usepackage[koi8-r]{inputenc}

Стало:

\usepackage[utf8x]{inputenc}
\usepackage{ucs}
Б\'{о}льшую

Bibtex

Bib-файлы, содержащие описание литературы, хранятся в кодировке KOI8-R. После выполнения команды bibtex необходимо сначала перекодировать получившийся bbl-файл в кодировку UTF-8 (см. Содержимое файлов), а затем выполнять трансляцию tex-файлов, подключающих этот список литературы.