[RUSSIAN] [ENGLISH]    [BACK] [AUTHOR'S HOME]

Учебник по rusconv v.3.11.

 По историческим причинам в нашей стране нет единого стандарта на используемую в русскоязычных текстах кодировку. Это приводит к тому, что иногда невозможно понять содержимое файла. В таких случаях надо пользоваться специальными программами, которые меняют кодировку. Надеемся, Вы выберете rusconv.
 Долгое время наиболее популярной была альтернативная кодировка, которая использовалась в операционной системе MS-DOS, другое ее название - кодовая страница 866. С наступлением эпохи Windows первенство захватила windows-кодировка, или кодовая страница 1251 (CP-1251). Все еще сохраняет свои позиции кодировка КОИ-8 (koi8-r), которая была очень полезна на раннем этапе становления Русского Интернета. Изредка попадаются тексты, набранные на компьютерах Macintosh. Предлагались и другие кодировки, но они не получили распространения. Текст, написанный в одной кодировке, невозможно читать в другой. Для борьбы с этим иногда русские буквы заменяют латинскими - latinica (латиница, или транслитерация, или волапюк). Кроме разных кодировок, операционные системы используют разные способы кодирования конца строк. В DOS и Windows для этого применяется два символа, в UNIX - один символ. Из-за этого текст, созданный в UNIX, в DOS/Windows выглядит как одна большая строка. Со всеми трудностями, связанными с несовместимостью кодировок операционных систем, помогает справиться rusconv.

 

[Содержание]

Вывод текста помощи.

 Rusconv - программа с большим количеством флагов. Если Вы забудете какой-нибудь из них, то всегда можете получить от rusconv текст помощи. Для этого надо либо просто запустить rusconv без каких-либо аргументов, либо дать флаг '-h'.
 Примеры:

  DOS:
C:\UTIL>RUSCONV
C:\UTIL>rusconv /h
  UNIX:
$rusconv -h
$rusconv
 В операционной системе windows использовать rusconv сложнее. Желательно работать в какой-нибудь оболочке типа Norton Commander (рекомендую Windows Commander). Тогда использование rusconv в windows ничем не отличается от его использования в DOS. В любом случае, rusconv можно запустить из меню "Пуск". В этом меню надо выбрать "Выполнить...", написать полный путь к программе (проще воспользоваться кнопкой "Обзор..."), добавить необходимые ключи и имена файлов и нажать кнопку "OK".
 UNIX-версия rusconv, как и большинство утилит этой операционной системы, неразговорчива. В ней выдается только список флагов. Для получения дополнительных сведений можно дать команду
$man rusconv
 Еще лучше воспользоваться HTML-документацией.

 

[Содержание]

Перевод файла из одной кодировки в другую.

 Предположим, что Вы работаете в windows, достали старую программу для DOS и пытаетесь вспомнить, как она работает. Но "Блокнот"(Notepad) вместо описания выводит непечатные символы. Чтобы прочитать текст, его из альтернативной кодировки, используемой в DOS, надо перевести в кодировку windows. Делается это так:

C:\GAMES\WARCRAFT>rusconv -alt +win read.me
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
.\read.me -> .\read.win: ok.
1 file(s) converted.
 В результате в текущей директории (обычно это та, откуда запущен rusconv, в данном примере - c:\games\warcraft) создается файл с тем же именем, что и у исходного файла, но с другим расширением, которое показывает, какая кодировка в файле.
 Вот список, какое расширение какой кодировке соответствует:
 .alt - альтернативная кодировка, используется в DOS
 .koi - кодировка КОИ-8, используется в UNIX
 .lat - латиница, русский текст латинскими буквами
 .mac - кодировка Macintosh
 .win - кодировка Windows
 Чтобы указать, из какой кодировки переводить, надо дать один из флагов
-alt, -koi, -mac или -win.
 Rusconv не переводит из латиницы. Чтобы указать, в какую кодировку переводить, надо дать один из флагов
+alt, +koi, +lat, +mac или +win.

 UNIX-версия, как и большинство утилит этой системы, неразговорчивая, и по умолчанию выводит только сообщения об ошибках. Чтобы ее "разговорить", надо использовать флаг '-v'.
 В следующем примере создается файл 'test.file', содержащий строку "Проверка флага '-v'.". Файл будет в кодировке КОИ-8, используемой в UNIX. Вначале мы переводим его в кодировку windows, при этом флаг '-v' не используем. Будет создан файл 'test.win', но rusconv на экран ничего не выдаст. Затем мы переводим файл в латиницу, используя этот флаг, и проверяем результаты конвертирования.

$echo Проверка флага '-v'. >test.file
$rusconv -koi +win test.file
$rusconv -v -koi +lat test.file
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
./test.file -> ./test.lat: ok.
1 file(s) converted.
$cat test.lat
Proverka flaga '-v'.

 

[Содержание]

Изменение типов концов строк.

 Даже то, что текст написан только латинскими буквами, не может гарантировать, что его можно нормально читать во всех операционных системах. В DOS и windows концы строк кодируются двумя символами, в UNIX - одним.
 Допустим, Вы работаете в DOS или windows и скачали из Интернета текст, созданный в UNIX. Тогда для Вас этот текст будет выглядеть как одна большая строка с забавными символами в тех местах, где она должна быть разбита на части. Чтобы привести текст к читаемому виду, надо дать команду

C:\NEW>rusconv -cr2crlf readme.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
.\readme.txt -> .\readme.crlf: ok.
1 file(s) converted.
 Результат преобразования будет содержаться в файле с таким же именем и расширением .crlf (UNIX и windows) или .crl (DOS). В данном примере - в файле 'readme.crlf'.
 В UNIX при использовании неправильного формата файлов тоже возникает подобная проблема. На концах строк текстовые редакторы выводят лишний символ, некоторые программы из-за этого символа не компилируются. Чтобы исправить положение, используйте флаг '-crlf2cr':
$rusconv -crlf2cr -v files.bbs
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
./files.bbs -> ./files.cr: ok.
1 file(s) converted.

 

[Содержание]

Сокращения для часто используемых наборов флагов.

 Каждая операционная система создает русскоязычные тексты по-разному.

 Для правильного преобразования файлов приходится учитывать как кодировку в нем, так и тип строк. Из-за этого надо писать несколько флагов:
  Из  DOS      в  UNIX     : -alt +koi -crlf2cr
  Из  UNIX     в  DOS      : -koi +alt -cr2crlf
  Из  windows  в  UNIX     : -win +koi -crlf2cr
  Из  UNIX     в  windows  : -koi +win -cr2crlf
  Из  DOS      в  windows  : -alt +win
  Из  windows  в  DOS      : -win +alt
 Вероятно, наиболее часто приходится переносить тексты из UNIX в DOS и обратно, а в последнее время - из UNIX в windows и обратно. Преобразовывать файлы из DOS-формата в windows-формат и наоборот обычно не требуется - для windows-текстов можно использовать Notepad, а для просмотра DOS-текстов достаточно запустить программу типа Norton Commander.
 Чтобы не набирать постоянно стандартные наборы флагов, rusconv предлагает использовать сокращения для них:
  -dos2unix  -  то же самое, что '-alt +koi -crlf2cr'
  -unix2dos  -  то же самое, что '-koi +alt -cr2crlf'
  -win2unix  -  то же самое, что '-win +koi -crlf2cr'
  -unix2win  -  то же самое, что '-koi +win -cr2crlf'
 Эти сокращения легки в использовании, но и они могут показаться слишком длинными. Поэтому есть еще более короткие сокращения:
  -d2u  -  то же самое, что '-dos2unix'
  -u2d  -  то же самое, что '-unix2dos'
  -w2u  -  то же самое, что '-win2unix'
  -u2w  -  то же самое, что '-unix2win'
rusconv -w2u index.html
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
.\index.html -> .\index.koi: ok.
1 file(s) converted.

 

[Содержание]

Перезаписывание файлов.

 При конвертировании rusconv создает новый файл. Но иногда его не требуется, или нужно заменить кодировку в заданном файле. В этом случае можно использовать флаг '-o'. Тогда rusconv вначале создает временный файл, в котором сохраняется результат перевода, а затем перемещает этот временный файл на место исходного. Если в процессе работы случится ошибка, то исходный файл остается нетронутым, а временный файл остается на диске и содержит текст, который был переведен до возникновения ошибки.
 Пример:

D:\HTML>rusconv -o -w2u index.html
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
.\index.html -> D:\HTML\rcA290.TMP -> .\index.html: ok.
1 file(s) converted.

 

[Содержание]

Перевод сразу в несколько кодировок и задание своих расширений для файлов.

 Иногда, особенно при создании HTML-страниц, файл надо перевести в несколько кодировок. Например, Вы создаете текст в операционной системе DOS, а текст на домашней страничке должен быть в кодировках windows и КОИ. Можно запустить rusconv два раза, но лучше все сделать сразу:

C:\HTML>rusconv -alt +koi +win index-pre.html
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
.\index-pre.html -> .\index-pre.koi, .\index-pre.win: ok.
1 file(s) converted.
 Результат находится в файлах с тем же именем и с расширениями по умолчанию:
 .alt - для альтернативной кодировки
 .koi - для кодировки КОИ-8
 .lat - для латиницы
 .mac - для кодировки Macintosh
 .win - для кодировки Windows
 Часто расширения по умолчанию являются неудобными. Тогда можно задать свои расширения. Для этого надо использовать команды:
 -aext расширение - для альтернативной кодировки
 -kext расширение - для кодировки КОИ-8
 -lext расширение - для латиницы
 -mext расширение - для кодировки Macintosh
 -wext расширение - для кодировки Windows
 Допустим, Вы набрали русский алфавит в кодировке windows и хотите узнать, как он выглядит во всех остальных кодировках. При этом желательно, чтобы результат находился в текстовых файлах. Это возможно так:
E:\EX>dir

 Содержимое папки E:\EX
.              <ПАПКА>      24.10.98  15:27 .
..             <ПАПКА>      24.10.98  15:27 ..
ALPHABET TXT            66  02.10.98  13:15 alphabet.txt

E:\EX>rusconv -win +alt -aext alt.txt +koi -kext koi.txt
 +lat -lext lat.txt +mac -mext mac.txt +win -wext win.txt alphabet.txt

** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
.\alphabet.txt -> .\alphabet.alt.txt, .\alphabet.koi.txt,
.\alphabet.mac.txt, .\alphabet.lat.txt, .\alphabet.win.txt: ok.
1 file(s) converted.

E:\EX>dir

 Содержимое папки E:\EX
.              <ПАПКА>      24.10.98  15:27 .
..             <ПАПКА>      24.10.98  15:27 ..
ALPHAB~1 TXT            66  24.10.98  16:24 alphabet.alt.txt
ALPHAB~2 TXT            66  24.10.98  16:24 alphabet.koi.txt
ALPHAB~3 TXT            66  24.10.98  16:24 alphabet.mac.txt
ALPHAB~4 TXT            82  24.10.98  16:24 alphabet.lat.txt
ALPHAB~5 TXT            66  24.10.98  16:24 alphabet.win.txt
ALPHABET TXT            66  02.10.98  13:15 alphabet.txt
 Если Вы хотите поменять расширение у файлов с результатами, то для этого надо давать одну из команд 'aext', 'kext', 'lext', 'mext' или 'wext'. Но при переводе только в одну кодировку лучше воспользоваться командой
 -ext расширение
 В зависимости от того, в какую кодировку Вы переводите, эта команда воспринимается как одна из команд '-aext расширение', '-kext расширение', '-lext расширение', '-mext расширение' или '-wext расширение'.
 С помощью команды '-ext' можно также переопределить стандартные расширения '.cr' и '.crlf', используемые при изменении типов концов строк в файлах:
E:\EX>rusconv -cr2crlf unixtext
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
.\unixtext -> .\unixtext.crlf: ok.
1 file(s) converted.

E:\EX>rusconv -cr2crlf -ext txt unixtext
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
.\unixtext -> .\unixtext.txt: ok.
1 file(s) converted.

 

[Содержание]

Перевод сразу нескольких файлов.

 Когда надо перевести несколько файлов из одной кодировки в другую, неудобно переводить по одному файлу. Лучше перевести сразу всю группу. Для этого достаточно написать их имена после флагов. Можно использовать метасимволы - rusconv сам найдет файлы, подходящие под шаблон. В UNIX-версии используйте метасимволы с осторожностью, причины этого можно найти в абзаце "Задание выходной директории".

C:\HTML>rusconv -alt +koi +win -kext koi.html -wext win.html *.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
.\rusconv.txt -> .\rusconv.koi.html, .\rusconv.win.html: ok.
.\readme.txt -> .\readme.koi.html, .\readme.win.html: ok.
.\index.txt -> .\index.koi.html, .\index.win.html: ok.
3 file(s) converted.

 

[Содержание]

Задание выходной директории.

 По умолчанию файлы с результатами перевода создаются в текущей директории - обычно это та директория, из которой запускается rusconv. Но если последним аргументом является имя директории, то файлы будут создаваться именно в ней.
 При использовании UNIX-версии rusconv будьте осторожны с метасимволами. В этой операционной системе метасимволы раскрывает оболочка, и программе дается уже готовый список файлов. При этом никто не гарантирует, что последним элементом в списке не будет директория. Поэтому, на всякий случай, явно указывайте выходную директорию:

 Содержимое текущей директории:
$ls -l
-rwxr-xr-x   1 w_re     w_re        21394 Oct 25 02:27 file1.html
-rwxr-xr-x   1 w_re     w_re        21394 Oct 25 02:27 file2.html
drwxr-xr-x   2 w_re     w_re         1024 Oct 25 02:27 res

 Скорее всего, ошибка:
$rusconv -v -w2u *
// После раскрытия метасимволов оболочкой:
// rusconv -v -w2u file1.html file2.html res
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
./file1.html -> res/file1.koi: ok.
./file2.html -> res/file2.koi: ok.
2 file(s) converted.

 Чтобы файлы создавались в текущей директории:
$rusconv -v -w2u * .
// После раскрытия метасимволов оболочкой:
// rusconv -v -w2u file1.html file2.html res .
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
warning: 'res' is a directory, skipping.
./file1.html -> ./file1.koi: ok.
./file2.html -> ./file2.koi: ok.
2 file(s) converted.

 

[Содержание]

Использование длинных имен файлов и сетевых файлов.

 Версия 3.0 была для двух операционных систем - для DOS и UNIX. Чтобы использовать длинные имена файлов, в версии 3.11 есть rusconv для windows. Из-за обращения к новым функциям для работы с файлами, его невозможно запустить на машинах, не работающих в среде windows 95/98. Зато доступны длинные имена и сетевые файлы.
 Если надо перевести файл, в имени которого есть пробел, надо использовать кавычки:

C:\HTML>rusconv -win +alt "long file name.txt"
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
.\long file name.txt -> .\long file name.alt: ok.
1 file(s) converted.
 Большинство оболочек для windows, похожих на Norton Commander, при нажатии клавиш Ctrl+Enter добавляют в командную строку имя файла. Имена файлов, содержащие пробелы, автоматически окружаются кавычками. Если это не так, то надо заменить оболочку. Мы рекомендуем Windows Commander.
 При работе в локальной windows-сети можно (если есть права) переводить файлы на другом компьютере без предварительного подключения сетевого диска. Для этого нужно использовать универсальные имена файлов (\\сервер\ресурс\файл):
rusconv -w2u -ext html \\comp\c\html\*.html "\\comp\c\html\koi version"
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
\\comp\c\html\tutorial.html -> \\comp\c\html\koi version\tutorial.html: ok.
\\comp\c\html\index.html -> \\comp\c\html\koi version\index.html: ok.
\\comp\c\html\errors.html -> \\comp\c\html\koi version\errors.html: ok.
3 file(s) converted.

 

[Содержание]

Остальные флаги.

 Осталось рассмотреть флаги '--', '-s', '-v', '-close' и '-noclose'. Обычно они используются при работе в командных файлах.

  --     конец флагов
 Rusconv просматривает аргументы слева направо. Первый аргумент, не являющийся флагом, начинает список файлов для перевода. За флаг rusconv считает аргумент, начинающийся с символа '-' или '+' (или '/' в DOS и windows-версиях). Иногда требуется насильно прервать в некотором месте интерпретацию флагов. В этом случае используется сочетание символов '--'. Все, что стоит после него - имена файлов для перевода.
 Допустим, файл с именем '-file.txt' надо перевести из windows-кодировки в КОИ-8:
 Неправильно:
E:\EX>rusconv -win +koi -file.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
error: unrecognized flag '-file.txt'.
try 'rusconv -h' or read the manual for help.

 Правильно:
rusconv -win +koi -- -file.txt
** rusconv -- convertor of Russian codepages, v.3.11.
** (c)w_re -- Oleg A. Paraschenko  http://beta.math.spbu.ru/~prof/w_re/
.\-file.txt -> .\-file.koi: ok.
1 file(s) converted.
  -s     работа без вывода сообщений на экран
  -v     вывод всех сообщений на экран
 Флаг '-s' подавляет любой вывод на экран. Флаг '-v', наоборот, делает rusconv разговорчивым. Если задать одновременно и '-s', и '-v', то будет выведено сообщение об ошибке. DOS и windows-версии по умолчанию разговорчивые. UNIX-версия по умолчанию выводит только сообщения об ошибках.
  -close     позволять windows закрывать окно с результатами работы rusconv
  -noclose   оставлять окно на экране
 Эти флаги имеют смысл только в windows-версии, в остальных версиях они игнорируются. При запуске программы операционная система windows создает для rusconv отдельное окно. Если задан флаг '-close', то это окно закрывается сразу после завершения перевода файлов. По умолчанию, или если задан флаг '-noclose', окно с результатами работы остается на экране. Чтобы его закрыть, можно нажать любую клавишу. Если одновременно написать и '-close', и '-noclose', окно останется на экране и будет содержать сообщение об ошибке.

 

[Содержание]

Как определить кодировку файла.

 Для определения кодировки в файле можно использовать программу whatrus, которая распространяется вместе с rusconv:

C:\UTIL>whatrus \\comp\c\html\index.html
WIN detected.
 За один раз можно распознать кодировку только в одном файле. Если требуется только код возврата, а сообщение не надо, используйте флаг '-s'.
 При запуске программы в среде windows 95/98, операционная система создает для whatrus отдельное окно для вывода результата. Чтобы закрыть его, нажмите любую клавишу. Если требуется, чтобы оно закрывалось автоматически, используйте флаг '-s'.

 

[Содержание]

Использование rusconv в командных файлах.

 Если Вы собираетесь использовать rusconv в командных файлах, воспользуйтесь этими советами.

 Использование кодов возврата программ rusconv и whatrus делает Ваш сценарий более интеллектуальным. Коды возврата:  В качестве примера приводится командный сценарий. На его вход дается некоторый файл, который преобразуется в файл index.html в кодировке windows.
windows-версия, makeindex.bat:

@ECHO OFF

REM  Копируем исходный файл в файл с именем 'index'.
ECHO COPY %1 index
copy %1 index
IF EXIST index GOTO TAKEENC
ECHO copy failed
EXIT

REM  Узнаем кодировку, в которой создан файл.
:TAKEENC
ECHO WHATRUS -s %1
whatrus -s %1

REM  Определение кода возврата начинаем с больших чисел, так как
REM  'IF ERRORLEVEL = N' на самом деле воспринимается как
REM  'IF ERRORLEVEL >= N'.
IF ERRORLEVEL = 255 GOTO WRERR
IF ERRORLEVEL =  14 GOTO MACENC
IF ERRORLEVEL =  13 GOTO WINENC
IF ERRORLEVEL =  12 GOTO KOIENC
IF ERRORLEVEL =  11 GOTO ALTENC
ECHO encoding not recognized
EXIT

REM  Сообщение об ошибке при исполнении whatrus.
:WRERR
ECHO whatrus failed
EXIT

REM  Конвертируем файл index в index.html.
:ALTENC
ECHO RUSCONV -close -alt +win -ext html index
rusconv -close -alt +win -ext html index
EXIT
:KOIENC
ECHO RUSCONV -close -alt +win -ext html index
rusconv -close -koi +win -ext html index
EXIT
:MACENC
ECHO RUSCONV -close -alt +win -ext html index
rusconv -close -mac +win -ext html index
EXIT
:WINENC
ECHO RUSCONV -win -alt +win -ext html index
rusconv -close -alt +win -ext html index
EXIT


UNIX-версия для bash, makeindex.sh:

# Копируем исходный файл в файл с именем 'index'.
rm -f index
cp $1 index
if [ ! -f index ]
then
	echo copy failed
	exit
fi

# Узнаем кодировку в файле и конвертируем его в файл index.html
whatrus $1
case $? in
	255) echo error executing whatrus;;
	  0) can''t detect encoding;;
	 11) rusconv -alt +win -ext html index;;
	 12) rusconv -koi +win -ext html index;;
	 13) rusconv -win +win -ext html index;;
	 14) rusconv -mac +win -ext html index;;
esac

 

[Содержание]

Приятной работы!


tutorial.html
Документ создан Паращенко Олегом
Последние изменения - 15 ноября 1998 года
[email protected]