2012/12/11 Denis Evdokimov <[email protected]>: > т.е. у него есть все основания выставить utf8 флаг, а именно:
У него нет всех оснований. Во-первых, в корне неверно говорить о выставлении флага. Повторяю: вы не должны рассчитывать на внутреннее представление строк в Перле. Есть два случая: бинарные последовательности и настоящие строки. И есть способ переходить от одного представления к другому (кодирование/декодирование). Во-вторых, что бы достичь того, что вы ожидаете, Перл должен был бы: 1. Посмотреть на кодировку текущей локали. 2. Декодировать сообщение из этой кодировки в текст. Первое не всегда возможно, потому что локаль может называться, например, "en_US". Второе не всегда возможно, потому что есть локали типа zh_CN.GB18030. Для декодирования сообщений в этой локале необходим сторонний модуль Encode::HanExtra. Перл не может иногда декодировать, а иногда нет. Должно быть детерминированное поведение. Уверен, есть более основательные причины почему это не происходит, но я их не знаю. > 1. use utf8; Как уже сказал Руслан, это вообще не имеет отношения к вопросу. Прочтите внимательно perldoc utf8. > 2. utf-ная локаль Понятия "utf-ная локаль" нет в принципе. > 3. За текст сообщения отвечает ОС -> можно быть уверенным, что кодировка и > локаль одинаковые. Я сомневаюсь, что за это отвечает ОС. Скорее libc с её библиотекой локализации (типа gettext) или что-то в этом роде. -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
