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