Этот код
print mb_substr('éxxx', 0, 1);
печатает пустое место :(
Предполагается напечатать первый символ, é
. Однако это работает:
print mb_substr('éxxx', 0, 2);
Но это неправильно, потому что (0, 2) означает 2 символа...
Этот код
print mb_substr('éxxx', 0, 1);
печатает пустое место :(
Предполагается напечатать первый символ, é
. Однако это работает:
print mb_substr('éxxx', 0, 2);
Но это неправильно, потому что (0, 2) означает 2 символа...
Попробуйте передать параметр кодировки в mb_substr следующим образом:
print mb_substr('éxxx', 0, 1, 'utf-8');
Кодировка никогда не определяется автоматически.
mb_detect_encoding
для < i>на самом деле попытаться определить кодировку?
- person Alvin Wong; 19.12.2012
substr($string, 1)
, не передавая ему аргумент mb_strlen()?
- person Alex; 19.12.2012
mb_internal_encoding
вместо передачи "utf-8"
ко всем mb_*
функциям? Как указал Альваро Г. Викарио
- person Alvin Wong; 19.12.2012
На практике я обнаружил, что в некоторых системах многобайтовые функции по умолчанию используют ISO-8859-1 для внутреннего кодирования. Это эффективно разрушает их способность обрабатывать многобайтовый текст.
Установка хорошего значения по умолчанию, вероятно, решит эту и некоторые другие проблемы:
mb_internal_encoding('UTF-8');