shoorick: (Default)
[personal profile] shoorick
Пытался преобразовать текст на 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}" );

Date: 2011-11-25 05:45 pm (UTC)
From: [identity profile] vazhnov.livejournal.com
Почему бы везде не использовать уникод?

Re: Юникод

Date: 2011-11-25 06:37 pm (UTC)
From: [identity profile] shoorick.livejournal.com
Потому что на некоторые сайты настолько древние, что переводить их на
юникод весьма напряжно. Поэтому на время создания новой, юникодной
версии, приходится изобретать костыли.

Date: 2011-11-29 02:51 am (UTC)
From: [identity profile] kohb.livejournal.com
ну, «ёлочки» - оригинально французские, и попали в 819 страницу, она же latin1, она же 8859-1, и даже m$ не посмела их затереть в своей western-1252, а, поскольку 8859-1 стала базовой для всех юникодов, они остались в ней в перво.
немецким „лапкам“ повезло меньше — они не попали даже в первое расширение ASCII (U+0080-U+07FF), оставшись с прочим редкоиспользуемым хламом — U+201E и U+201C.

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 21st, 2026 07:25 am
Powered by Dreamwidth Studios