2015-04-10 2 views
0

Моя проблема в том, что я хочу получить длину строки со специальными символами (например, ä, ü, ö и т. Д.). Эта строка сохраняется в переменной. Я пытался получить длину с mb_strlen($string, 'UTF-8'));, но он вернулся неправильно .. Но я думаю, что у меня есть подход к решению проблемы ..Как получить длину строки UTF-8 PHP?

Потому что, когда я пишу строки, которая в этой переменной в mb_strlen сам как mb_strlen('äöü', 'UTF-8')); правильная длина возвращается. Возможно, что-то не так с кодировкой переменной (переменная заполняется вводом пользователя)

+0

Какой длины вы хотите? В байтах? Может быть между 6 и 9. Кодовые страницы Unicode? Может быть от 3 до 6. Графемы? Было бы 3. Что-нибудь еще? Тем не менее, предоставьте код для воспроизведения проблемы, используя синтаксис '' \ xab '' для строк, поэтому контент воспроизводится независимо от кодировки исходного файла. –

+0

Зачем нужна длина строки? –

ответ

0

Похоже, что вход ($string) находится в другом кодировании - возможно, iso-8859-1 (особенно, если mb_strlen() == strlen()).

Если $string пришел из формы ввода, вам необходимо убедиться, что форма в размещении в формате UTF-8. Если не указано, по умолчанию часто используется iso-8859-1.

Это делается с приличными браузерами, выполнив:

<form action="form.php" method="POST" accept-charset="utf-8">