Как я могу преобразовать несколько файлов в кодировку UTF-8 с помощью инструментов командной строки * nix?

117736
jason

Возможный дубликат:
Пакетное преобразование файлов для кодирования или окончания строки

У меня есть несколько текстовых файлов, которые я хотел бы преобразовать из любой кодировки в кодировку UTF-8.

Существуют ли какие-либо инструменты командной строки или Perl (или язык по вашему выбору), которые я могу использовать для массового выполнения?

45

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

55
Vinko Vrsalovic

iconv конвертирует многие кодировки символов. Таким образом, добавив немного магии Баш, и мы можем написать

for file in *.txt; do iconv -f ascii -t utf-8 "$file" -o "$.utf8.txt" done 

Это будет выполняться iconv -f ascii -t utf-8для каждого файла, оканчивающегося на .txt, отправляя перекодированный файл в файл с тем же именем, но заканчивающийся на .utf8.txtвместо .txt.

Дело не в том, что на самом деле это что-то сделает с вашими файлами (потому что ASCII - это подмножество UTF-8), а в том, чтобы ответить на ваш вопрос о том, как конвертировать кодировки.

Вы должны заключить в кавычки переменную $ i, чтобы обрабатывать имена файлов с пробелами. Richard Hoskins 14 лет назад 2
Это будет делать вещи, это добавит спецификацию для одного ... jason 14 лет назад 0
Вы уверены, что iconv добавит спецификацию? У меня сложилось впечатление, что это не будет с UTF-8. Richard Hoskins 14 лет назад 0
Я только что проверил это с помощью iconv (GNU libiconv 1.11), и он не добавил спецификацию. Насколько я понимаю, iconv будет добавлять спецификацию, только если она присутствует во входных данных, чего не было бы в ASCII. Спецификация проблематична и необязательна для UTF-8. Richard Hoskins 14 лет назад 4
К вашему сведению, Windows имеет тенденцию сбрасывать спецификации во всех файлах Unicode, даже в UTF-8. Это можно увидеть с помощью Блокнота, выбрав кодировку в диалоговом окне «Сохранить как». Список «Unicode», «Unicode big endian» и «UTF-8» в дополнение к классической кодировке «ANSI». Все, кроме ANSI, включают спецификацию. RBerteig 14 лет назад 0
iconv следует принципу наименьшего удивления: нет спецификации на входе, нет спецификации на выходе. Vinko Vrsalovic 14 лет назад 0
если ваша версия iconv не поддерживает параметр -o, вы можете напрямую заменить его на >>, чтобы использовать перенаправление оболочки. rob 8 лет назад 2

Похожие вопросы