Как решить задачу объединения файлов, имеющих разные кодировки, например, если необходимо вставить содержимое файла в кодировке 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)