Конвертировать много файлов в одну и ту же кодировку

488
mnml

Я хотел бы убедиться, что все мои файлы правильно закодированы в UTF-8 в большом репозитории проекта. Есть ли инструмент для этого или способ сделать это с помощью инструментов Unix?

1

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

1
sleske

В общем, нет способа сделать это. UTF-8 не имеет «магического числа» или маркера, поэтому вы можете только доказать, что файл не находится в UTF-8 (если он содержит недопустимые последовательности), но не является таковым.

Однако вы можете использовать эвристический подход. Что именно работает, будет зависеть от ваших данных.

Одна идея:

  • Составьте список всех файлов, которые являются текстовыми файлами и содержат не-ASCII символы. Вторую часть легко сделать, используя perl или аналогичный; первое будет зависеть от того, какие файлы у вас есть. Unix fileтакже проверит наличие символов, отличных от ASCII, но он менее надежен (проверяет только начало файла).
  • Если список небольшой, проверьте файлы вручную. В противном случае, проверьте, какие из них действительны в UTF-8 (опять же, в Perl есть модули для этого или используйте инструмент, подобный iconvили recode). Действительные файлы UTF-8, вероятно, в порядке. Остальные должны быть проверены вручную (если вы точно не знаете, как они кодируются).

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