php mb_strtolower дает недопустимый символ - PullRequest
3 голосов
/ 30 августа 2010

Следующий код создает проблему.

var_dump($name);
$name = mb_strtolower($name);
var_dump($name);

Выход

string(32) "brazil and technology, São Paulo"
string(32) "brazil and technology, s�o paulo"

Может кто-нибудь объяснить, почему я получаю недопустимый символ для ã? Что я тут не так делаю?

mb_detect_encoding($name) says its UTF-8

1 Ответ

8 голосов
/ 30 августа 2010

mb_strtolower() имеет второй параметр для указания кодировки.Если опущен, он использует возвращаемое значение mb_internal_encoding ().Попробуйте добавить этот параметр явно.Если вы используете UTF-8:

 $name = mb_strtolower($name, "UTF-8");

Если это не поможет, убедитесь на 100%, что входящие данные - это UTF-8 на всех этапах, а вывод - UTF8 также.Вполне возможно, что вы работаете с данными IS-8859-1, которые искажаются операцией strtolower.

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