Как решить задачу объединения файлов, имеющих разные кодировки, например, если необходимо вставить содержимое файла в кодировке OEM в HTML файл в кодировке UTF-8? Это может понадобиться, например, чтобы оформить в виде HTML страницы вывод командного файла, сохранённый в кодировке 866.

Возможны и другие ситуации, когда требуется «собрать» результирующий текстовый файл из нескольких, имеющих кодировки Windows-1251, Unicode, UTF-8.

Статья рассказывает, как с помощью программы nhrt решить такую задачу «в одну команду».

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

Исходные данные

Рассмотрим такую задачу на примере автоматической вставки текстовых файлов ANSI (1251), OEM (866). Для большей сложности добавим текст на французском языке (западно-европейская кодировка 1252 на компьютере с русскими региональными настройками!) в HTML страницу в кодировке UTF-8.

Сначала подготовим шаблон HTML файла, в котором задаём строки для замены, например, 'step1.cmd' для подстановки файла step1.cmd, т.е. шаблон будет выглядеть примерно так (заголовок HTML не показан):

<body>
<h1>Вставка текста в кодировке ANSI</h1>
<p>'mixing code pages readme.txt'</p>
<h1>Вставка текста в кодировке OEM</h1>
Пакетный файл step1.cmd (файл имеет кодировку OEM) <br>
<pre>'step1.cmd'</pre>
Результат выполнения файла step1.cmd (файл имеет кодировку OEM) <br>
<pre>'step1.out'</pre>
<h1>Вставка текста в кодировке 1252 (из файла text in french.txt, французский язык)</h1>
<pre>'text in french.txt'</pre>
</body>

Запуск nhrt для вставки файлов

Затем необходимо запустить программу nhrt для вставки файлов:

rem Копируем файл для обработки 
copy /y page-template.htm page.html

rem Выполняем замены, для OEM явно указывая кодовую страницу OEM
nhrt -spt:"'step1.cmd'" -i -f:step1.cmd,oem -cp:utf8,utf8 page.html
nhrt -spt:"'step1.out'" -i -f:step1.out,oem page.html
nhrt -spt:"'mixing code pages readme.txt'" -i -f:"mixing code pages readme.txt" page.html
nhrt -spt:"'text in french.txt'" -i -f:"text in french.txt",1252 page.html

В результате, страница page.html в кодировке UTF-8 будет содержать все перечисленные текстовые файлы, приведённые к кодировке UTF-8.

Вставка в начало или конец файла

Начиная с nhrt v2.12, поддерживаются команды вставки в начало (-insert) или конец (-append) файла текста из другого файла.

Другими словами, это команды для последовательного объединения текстовых файлов: вставить содержимое file1.txt в начало, а содержимое file2.txt — в конец t.txt.

nhrt -insert -f:file1.txt t.txt
nhrt -append -f:file2.txt t.txt

Результат аналогичен команде copy по склеиванию файлов:

copy file1.txt + t.txt + file2.txt t2.txt

В отличие от copy, в nhrt поддерживаются все кодировки, и даже есть автоматическое определение кодировок.

См. также

Скачать файлы из примера (ZIP)

Объединение файлов разных кодировок
Метки:     

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *