Я часто стикаюся з текстовими файлами (такими як файли субтитрів моєю рідною мовою, перською ) з проблемами кодування символів. Ці файли створені в 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
.