С man iconv
:
Программа iconv преобразует текст из одной кодировки в другую кодировку.Точнее, он преобразует кодировку, заданную для опции -f, в кодировку, указанную для опции -t.Любая из этих кодировок по умолчанию соответствует кодировке текущей локали
Поскольку вы не указали опцию -f
, предполагается, что файл закодирован с кодировкой вашей текущей локали (вероятно, UTF-8),что, видимо, не соответствует действительности.Ваши текстовые редакторы (gedit, vim) выполняют некоторое обнаружение кодировки - вы можете проверить, какую кодировку они обнаруживают (я не знаю, как - я не использую ни одну из них) и использовать это в качестве опции -f
iconv (или сохранитьоткрыть файл с нужной вам кодировкой, используя один из этих текстовых редакторов).
Вы также можете использовать какой-либо инструмент для обнаружения кодирования, например Python chardet module :
$ python -c "import chardet as c; print c.detect(open('file.txt').read(4096))"
{'confidence': 0.7331842298102511, 'encoding': 'ISO-8859-2'}