Командная строка Windows для объединения нескольких файлов UTF-8 с помощью спецификации

572
Moby Disk

Я хочу объединить несколько текстовых файлов, которые закодированы как UTF8 + BOM, используя пакетный файл Windows 10. Между каждым файлом я хочу добавить пустую строку. Я использовал команду TYPE, как показано ниже, но обнаружил, что, поскольку в каждом файле есть спецификация UTF-8, в результате выходной файл содержит спецификации в середине. Я также попробовал команду COPY, и она сделала то же самое.

Пример 1

ECHO -- File start >OUTPUT.TXT TYPE file1 >>OUTPUT.TXT ECHO( >>OUTPUT.TXT TYPE file2 >>OUTPUT.TXT ECHO( >>OUTPUT.TXT . . . 

Пример 2

COPY header+file1+blankline+file2+blankline+... OUTPUT.TXT 

Я ожидал, что TYPE не будет отображать буквальные символы, но вместо этого будет использовать спецификацию для определения кодировки файла, чтобы он мог правильно отобразить файл. Очевидно нет. :-( Разве команда TYPE вообще не понимает Unicode? Если бы это был файл UTF-16, действительно ли она выводила бы ноль символов между ними?

Какая альтернатива? Нужно ли использовать PowerShell?

1
Ну, команда type из каменного века, где не существовало ни одного UTF-формата, так как вы думаете, как она справится с этим? Вы просто не можете скопировать файлы с разными кодировками в один файл без предварительной их унификации. LotPings 6 лет назад 0
есть команда iconv или, возможно, другая команда в * nix, перенесенная в windows, которая может преобразовать файл из UTF-16 с BOM, в UTF-8 без BOM. Вероятно, вам следует использовать команду `chcp 65001`, так как это UTF-8 без спецификации. Тогда вы можете попробовать скопировать и посмотреть, как это происходит. barlop 6 лет назад 0
@LotPings Type может нормально работать с UTF-8 без спецификации. chcp 65001, помните, что большинство команд из камня, но они время от времени обновляются! barlop 6 лет назад 0

0 ответов на вопрос