перекодировка текста
--unicode-subst=formatstring
When this option is given, Unicode characters that cannot be
represented in the target encoding are replaced with a place-
holder string that is constructed from the given formatstring,
applied to the Unicode code point. The formatstring must be a
format string in the same format as for the printf command or
the printf function, taking either no argument or exactly one
unsigned integer argument
$ echo Здравствуй, мир! | iconv -f UTF-8 -t L1 --unicode-subst="<U+%04X>"
<U+0417><U+0434><U+0440><U+0430><U+0432><U+0441><U+0442><U+0432><U+0443><U+0439>, <U+043C><U+0438><U+0440>!
что-то разумное?
Мне нужно чтобы было так:
$ echo Здравствуй, мир! | iconv -f UTF-8 -t L1 --?Ну, или хотябы:
Zdravstvuy, mir!
$ echo Hallå världen! | iconv -f UTF-8 -t KOI8-R --?Уж такое я точно где-то видел.
Halla varlden!
~$ echo 'Hallå världen!' | iconv -f UTF-8 -t KOI8-R//translitПравда у меня Ubuntu 8.10
Halla varlden!
Хотя, у меня это выглядит несколько иначе:
$ echo 'Hallå världen!' | iconv -f UTF-8 -t KOI8-R//translit
Halla v"arlden!
Но, в общем, терпимо.
Правда, для русского текста не работает почему-то. =(
$ echo Здравствуй, мир! | iconv -f UTF-8 -t latin1//TRANSLIT
iconv: (stdin):1:0: cannot convert
$ iconv --version
iconv (GNU libiconv 1.11)
quad ~ $ echo Hallå världen! | iconv -f UTF-8 -t KOI8-R//translit
Halla varlden!
gentoo
Правда, для русского текста не работает почему-то.одно дело убирание диакретических знаков, а другое - транслит
первое - фича стандартого уникода, а второе - чисто киррилическая специфика.
второе - чисто киррилическая специфика.проблем-то. Переведи в KOI8-R и дропни первый бит.
PROBLEM-TO. pEREWEDI W KOI8-R I DROPNI PERWYJ BIT.POLU^I[X SLABO^ITAEMOE BLONDINISTOE NE^TO S WKRAPLENIQMI ZNAKOW PREPINANIQ
проблем-то. Переведи в KOI8-R и дропни первый бит.во-первых: и как это сделать на реальной задаче? т.е. как совместить одновременную перекодировку в latin1 + перекодировку в koi8 + дропание первого бита?
во-вторых: что в твоем варианте будет для всяких щ, щ, ч и т.д.?
ps
насколько я понял топикстартера, ему надо что-то типа:
$ echo 'Hallå världen! Добрый день.' | iconv -f UTF-8 -t Latin1
получив в результате
'Halla varlden! Dobryj den.'
sed \
-e 's/ё/yo/g' \
-e 's/Ё/Yo/g' \
-e 's/ж/zh/g' \
-e 's/Ж/Zh/g' \
-e 's/ц/ts/g' \
-e 's/Ц/Ts/g' \
-e 's/ч/ch/g' \
-e 's/Ч/Ch/g' \
-e 's/ш/sh/g' \
-e 's/Ш/Sh/g' \
-e 's/щ/shch/g' \
-e 's/Щ/Shch/g' \
-e 's/ю/yu/g' \
-e 's/Ю/Yu/g' \
-e 's/я/ya/g' \
-e 's/Я/Ya/g' \
-e "y/абвгдезийклмнопрстуфхъыьэ/abvgdezijklmnoprstufh'y'e/" \
-e "y/АБВГДЕЗИЙКЛМНОПРСТУФХЪЫЬЭ/ABVGDEZIJKLMNOPRSTUFH'Y'E/"
насколько я понял топикстартера, ему надо что-то типа:"что-то типа" сваял на коленке:
$ echo "Hallå världen! Добрый день"|iconv -t koi8-r//translit|php -r '$a=file_get_contents("/dev/stdin"); for($i=0;$i<strlen($a);$i++){echo chr(ord($a[$i])&127);};'html entities — баг форума
Halla varlden. dOBRYJ DENX
одно дело убирание диакретических знаков, а другое - транслитспасибо! не знал, что это стандартная фича.
первое - фича стандартого уникода
Оставить комментарий
psihodog
Как перекодировать из юникода (utf-8, скажем) в однобайтные кодировки (кои, 1251, латин1 чтобы символы, отсутствующие в кодировке назначения переводились не в вопросики, а во что-нть разумное, например, если во что-нть кириллическое, то у букв всякие акценты убирались, если в латин, то во что-нть вроде кои8-кого отрезания восьмого бита. инструмент нужен юниксовый (конкретно под фрю типа как iconv.Ещё вопрос: бывает nullfs совмещённый с iconv'ом?