26.01.2011 22:35
ladykosha — Перлушка для превращения текста со всякими &xxx; и &#nnn; в нормальный utf8
1 |
|
Для превращения текста со всякими &xxx; и &nnn; в обычный utf8.
Понадобилось из-за штуки, которая в виде таких numeric character references и character entity references сохраняет всё, что не основные символы (латиница, цифры и что-то ещё по минимуму). Кириллицу, например.
use HTML::Entities; - там сделали главную часть работы за меня :)
binmode ("STDOUT", ":utf8"); - чтобы Perl не ругался на необходимость печатать расшифрованное :)
print decode_entities(<>); - читать справа налево. Берём нечто со stdin - <>. Превращаем в вид желаемый - decode_entities. И печатаем - print - на stdout.
Модуль HTML::Entities мне даже ставить не пришлось, в дебиане (сквизе) он в пакете libhtml-parser-perl, который был установлен по зависимостям к rss-читалке.
Советы по улучшению или замене на лучшее приму с благодарностью. :)
Сделано было по принципу "лишь бы быстро справиться с задачей". Справилось.
Q2W 26.01.2011 22:45 #
+ 0 -
Супер!
perl -MHTML::Entities -e"use open ':locale';print decode_entities <>"
Спасибо.
Если локаль не utf8, не потеряется ли часть символов? Скажем, если в тексте кроме кириллицы греческий. Или ещё что-нибудь интересное. Я понимаю, что сейчас другие локали уже не рекомендуются. Да и мне проверить не на чем. Но... :)
Если локаль не utf8, не потеряется ли часть символов? Скажем, если в тексте кроме кириллицы греческий. Или ещё что-нибудь интересное. Я понимаю, что сейчас другие локали уже не рекомендуются. Да и мне проверить не на чем. Но... :)
Если я правильно поняла, convmv решает другую задачу. Он конвертирует имена файлов.