LINUX.ORG.RU

iconv спотыкается


0

0

Читаю книги командой вида:

<code> iconv -f koi-8 -t utf-8 -c < fortraw.php.txt | less </code>

При этом пропадают некоторые буквы и куски слов: пропадают "ё", "интеллигент" превращается в "нт" и т.п. Без -c вылетает с ошибкой о недопустимом символе на первом же "ё". Что делать, куда копать? Локаль -- ru_RU.UTF-8, дистрибутив -- Fedora Core 6.

★★★★

Ответ на: комментарий от Xellos

потому что когда придумывается новая кодировка ,авторов меньше всего волнует возможность свободной конвертации в. и из.

anonymous
()
Ответ на: комментарий от anonymous

> потому что когда придумывается новая кодировка ,авторов меньше всего волнует возможность свободной конвертации в. и из.

???

В стандарте на КОИ-8 ё есть. В UCS-2 ё есть. В UTF-8 ё есть. В чём может быть проблема? Или он использует какую-то свою хитрую внутреннюю кодировку? А с сочетаниями букв тем более непонятно.

Понимаю, что вопрос не по адресу, поэтому буду тем более рад ответу.

acheron ★★★★
() автор топика
Ответ на: комментарий от anonymous

> man iconv -у него есть список не работающих комбинаций кодировок

В самом man iconv о неработающих КОМБИНАЦИЯХ ни слова. Я правильно понял, что имелось в виду что-то вроде man 3 iconv_open ?

acheron ★★★★
() автор топика
Ответ на: комментарий от anonymous

У меня в мане написано, что он от BSD, но про комбинации - ни слова. Датирован, правда, 2001 годом. Ладно, буду копать дальше...

acheron ★★★★
() автор топика

Попробуй использовать piconv (iconv, переписаный на перле) - с ним таких проблем вроде нет.

С иконвом подобное тоже встречал, так до конца и не разобрался.

Можешь ещё enca (enconv) попробовать - она ещё и кодировку входного файла сама определяет.

slav ★★
()
Ответ на: комментарий от kosmonavt

само собой это был koi8-r (очепятка)

anonymous
()
Ответ на: комментарий от kosmonavt

>А это точно что koi-8, может koi8-r ?

Принимает и то и другое. Результат тоже один.

acheron ★★★★
() автор топика
Ответ на: комментарий от anonymous

> А не проще ли iconv -f koi-8 -t cp1251 | iconv -f 1251 и ничего искать не надо?

А сработает? Ошибка -- на недопустимый для КОИ-8 символ.

acheron ★★★★
() автор топика

Стало интересно. Скачал libiconv с gnu.org -- оно здорово отличается от того, что в Федоре. Кто-нибудь может подсказать, в каком RPM находится iconv ? Заранее спасибо.

acheron ★★★★
() автор топика
Ответ на: комментарий от acheron

>Кто-нибудь может подсказать, в каком RPM находится iconv ? Заранее >спасибо.

gettext

anonymous
()
Ответ на: комментарий от sdio

Если в w3m настроен default document_charset: KOI8-R

sdio ★★★★★
()

можно еще recode использовать. У меня с ним было меньше проблем чем с iconv

madw
()
Ответ на: комментарий от acheron

>В стандарте на КОИ-8 ё есть.

В стандарте на KOI8 "ё" нет. Добавлено позднее и присутствует де-факто

anonymous
()
Ответ на: комментарий от acheron

>Кто-нибудь может подсказать, в каком RPM находится iconv ?

rpm -qf /usr/bin/iconv

Ay49Mihas ★★★★
()

Немного ошибся. Стал перебирать все кодировки с koi и выяснил, что подобный глюк происходит только с KOI-8 и KOI8 . Со всеми остальными: KOI8-R, KOI8-U, KOI8R, KOI8U и даже KOI8-T -- вроде, работает нормально.

Прошу прощения, что ввёл всех в заблуждение.

acheron ★★★★
() автор топика
Ответ на: комментарий от anonymous

> В стандарте на KOI8 "ё" нет. Добавлено позднее и присутствует де-факто.

Насколько мне известно, даже в стандарте 1970-какого-то года всё же был определён символ с кодом a3, и именно это я и имел в виду. Самого ГОСТа не видел, информация не из первых рук, поэтому спорить не буду.

acheron ★★★★
() автор топика
Ответ на: комментарий от acheron

> В стандарте на КОИ-8 ё есть. В UCS-2 ё есть. В UTF-8 ё есть. В чём может быть проблема?

Не придумывай проблемы, там где её нет!

zakon@rurouni ~ $ echo ё | iconv -t koi8-r | iconv -f koi8-r
ё

anonymous
()
Ответ на: комментарий от anonymous

См. выше: 1) не только ё; 2) не koi8-r, а непонятно как определённая koi8; 3) поэтому уже всё решено.

acheron ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.