Моя проблема в том, что я хочу получить длину строки со специальными символами (например, ä, ü, ö и т. Д.). Эта строка сохраняется в переменной.
Я пытался получить длину с mb_strlen($string, 'UTF-8'));
но он возвращается неправильно ..
Но я думаю, что у меня есть подход к решению проблем ..
Потому что, когда я пишу строку, которая находится в этой переменной, в mb_strlen сам, как
mb_strlen('äöü', 'UTF-8'));
правильная длина возвращается. Так что, возможно, что-то не так с кодировкой переменной (переменная заполняется вводом пользователя)
Звучит как вход ($string
) в другой кодировке — вероятно iso-8859-1 (особенно если mb_strlen() == strlen()
).
Если $string
пришел из формы ввода, вам необходимо убедиться, что форма в публикации в формате UTF-8. Если не указано иное, по умолчанию часто используется iso-8859-1.
Это делается в приличных браузерах:
<form action="form.php" method="POST" accept-charset="utf-8">
Других решений пока нет …