Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Типичный пример: для сравнения двух подстрок на естественных яызках обычно обе подстроки приводят к одному регистру.
Типичный пример: для сравнения двух подстрок на естественных яызках обычно обе подстроки приводят к одному регистру.
Широко распространенных универсальных библиотек, которые бы позволяли работать с любыми языками, насколько я знаю пока нет.
Для сравнения подстрок существуют нормализованные формы. Это НЕ lowercase/uppercase.
Consider that the uc("σ") and uc("ς") are both "Σ", but lc("Σ") cannot possibly return both of those.
Consider that Unicode::Collate::->new(level => 1)->eq(«d», "ð") is true, but Unicode::Collate::Locale->new(locale=>«is»,level => 1)->eq(«d», " ð") is false. Similarly, «ae» and "æ" are eq if you don’t use locales, or if you use the English one, but they are different in the Icelandic localeUnicode::Collate перлоспецифично, явление — нет.
use strict;
use warnings;
use Encode;
my $str = "бла-бла";
print $str; # тут будет всё нормально
$str = Encode::decode_utf8($str); # переводим строку из utf8 во внутренний формат перла
print $str; # упс! Wide character in print
$str = Encode::encode_utf8($str); # переводим строку обратно в utf-8
print $str; # бинго
<iframe src="http://mysite.ru/cgi-bin/script.pl" frameborder="0" width="900" height="200" ></iframe>
alert(decodeURIComponent("%F0%90%80%81").length)
test
Что нужно знать каждому разработчику о кодировках и наборах символов для работы с текстом, часть 2