Преобразование «ёлочек»
Nov. 24th, 2011 05:41 pmПытался преобразовать текст на UTF-8: хотел привести отсутствующую в КОИ-8 пунктуацию к виду, пригодному для HTML:
Поэтому более правильный вариант выглядит так:
use HTML::Entities;
...
my $fixed = encode_entities( $raw, "\x{460}-\x{2E2E}" );
Работало странно: тире преобразовывалось в —, а кавычки-ёлочки — нет. Причина оказалась простой — кавычки-ёлочки в юникоде находятся совсем не там, где остальные знаки пунктуации с пробелами — не в U+2000–U+205F, а гораздо ближе — их коды U+00AB и U+00BB, то есть, если перевести в десятичную систему счисления, 171 и 187. Ничего не напоминает? :-)Поэтому более правильный вариант выглядит так:
my $fixed = encode_entities( $raw, "\x{A0}-\x{40F}\x{460}-\x{2E2E}" );
no subject
Date: 2011-11-25 05:45 pm (UTC)Re: Юникод
Date: 2011-11-25 06:37 pm (UTC)юникод весьма напряжно. Поэтому на время создания новой, юникодной
версии, приходится изобретать костыли.
no subject
Date: 2011-11-29 02:51 am (UTC)немецким „лапкам“ повезло меньше — они не попали даже в первое расширение ASCII (U+0080-U+07FF), оставшись с прочим редкоиспользуемым хламом — U+201E и U+201C.