Как в Perl функция length () подсчитывает символы Юникода? - PullRequest
0 голосов
/ 05 ноября 2018

Почему length () говорит, что это 4 логических символа (я бы сказал, что это будет 1):

$ perl -lwe 'print length("?")'
4

Думаю, что-то не так с моими ожиданиями. :-) Что это?

1 Ответ

0 голосов
/ 05 ноября 2018

Если вы не скажете Perl, что исходный код скрипта находится в utf8, Perl предполагает ASCII. Это означает, что по умолчанию интерпретатор Perl видит ? как 4 отдельных символа. Если вы измените один вкладыш на perl -Mutf8 -lwe 'print length("?")' Вы увидите длину, обеспечивающую ожидаемый результат.

Прагма utf8 сообщает Perl, что исходный модуль находится в utf8, а не в ASCII. См. perldoc utf8 для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...