Я часто сталкиваюсь с текстовыми файлами (такими как файлы субтитров на моем родном языке, персидском ) с проблемами кодировки символов. Эти файлы создаются в Windows и сохраняются в неподходящей кодировке (кажется, ANSI), которая выглядит бессмысленной и нечитаемой, например:
В Windows это легко исправить, используя Notepad ++ для преобразования кодировки в UTF-8, как показано ниже:
И правильный читаемый результат выглядит так:
Я много искал подобное решение в GNU / Linux, но, к сожалению, предлагаемые решения (например, этот вопрос ) не работают. Больше всего, я видел , как люди предполагают , iconv
и , recode
но у меня не было никакой удачи с этими инструментами. Я протестировал много команд, включая следующие, и все они провалились:
$ recode ISO-8859-15..UTF8 file.txt
$ iconv -f ISO8859-15 -t UTF-8 file.txt > out.txt
$ iconv -f WINDOWS-1252 -t UTF-8 file.txt > out.txt
Ничего из этого не сработало!
Я использую Ubuntu-14.04 и ищу простое решение (GUI или CLI), которое работает так же, как Notepad ++.
Одним из важных аспектов «простоты» является то, что пользователю не требуется определять исходную кодировку; скорее исходная кодировка должна автоматически обнаруживаться инструментом, и только целевая кодировка должна предоставляться пользователем. Но, тем не менее, я также буду рад узнать о работающем решении, которое требует предоставления исходной кодировки.
Если кому-то нужен тест-кейс для проверки различных решений, приведенный выше пример доступен по этой ссылке .
iso-639
но этого, кажется, нет в наличии iconv
или recode
. По крайней мере, я не вижу этого в выводе iconv -l
.
vim
но оно не сработало.
vim '+set fileencoding=utf-8' '+wq' file.txt
.