Если включен символ «ž», то кодировка определенно не соответствует ISO-8859-1 («Latin 1»), но, вероятно, CP1252 («Win Latin 1»). Работа с сочетанием UTF8, ISO-8859-1 и CP1252 (возможно, даже в одном и том же файле) - это именно то, для чего предназначен модуль Perl Encoding :: FixLatin .
Вы можете установить модуль из CPAN, выполнив эту команду:
perl -MCPAN -e "install 'Encoding::FixLatin'"
Затем можно написать короткий Perl-скрипт, который использует модуль Encoding :: FixLatin, но есть еще более простой способ. Модуль поставляется с командой fix_latin
, которая принимает смешанную кодировку на стандартном входе и записывает UTF8 на стандартный вывод. Таким образом, вы можете использовать командную строку для преобразования одного файла:
fix_latin <input-file.txt >output-file.txt
Если вы работаете в Windows, то команда fix_latin, возможно, не находится в вашем пути и, возможно, не была запущена через pl2bat, и в этом случае вам нужно будет сделать что-то вроде:
perl C:\perl\bin\fix_latin.pl <input-file.txt >output-file.txt
Точные пути и имена файлов должны быть скорректированы для вашей системы.
Для запуска fix_latin
через целую кучу файлов в системе Linux было бы тривиально, но в Windows вам, вероятно, потребуется использовать powershell или аналогичный.