Я унифицирую кодировку большой группы текстовых файлов, собранных со временем на разных компьютерах. В основном я иду от ISO-8859-1 к UTF-8. Это хорошо конвертирует один файл:
recode ISO-8859-1..UTF-8 file.txt
Я, конечно, хочу сделать автоматическую пакетную обработку для всех файлов, и простое выполнение вышеприведенного для каждого файла имеет проблему, из-за которой у файлов, которые уже закодированы в UTF-8, будет нарушена их кодировка. (Например, символ «ä» первоначально в ISO-8859-1 будет выглядеть следующим образом, если смотреть как UTF-8, если вышеупомянутый перекодирование выполняется дважды: � -> ä -> ä
)
Мой вопрос заключается в том, какой сценарий будет выполнять перекодирование только при необходимости, то есть только для файлов, которые еще не были в целевой кодировке (в моем случае UTF-8)?
Глядя на страницу перекодировки man, я не мог понять, как сделать что-то подобное. Так что я думаю, это сводится к тому, как легко проверить кодировку файла, или, по крайней мере, если это UTF-8 или нет. Этот ответ подразумевает, что вы можете распознать действительные файлы UTF-8 с перекодированием, но как? Любой другой инструмент тоже подойдет, если я могу использовать результат в условии в скрипте bash ...