Как посчитать кол-во символов? (UTF-8)

Статус
В этой теме нельзя размещать новые ответы.

the_stalker

Постоялец
Регистрация
19 Фев 2007
Сообщения
116
Реакции
5
Столкнулся с проблемой:
функция strlen для текста в UTF-8 выдает значение в 2 раза (примерно) превышающее реальное значение кол-ва символов.

Потом вспомнил, что юникод занимает гораздо больше памяти, чем обычный текст в ISO-8859 например.

Как посчитать кол-во символов, а не байтов?
 
ну так навскидку
strlen(iconv("UTF-8","cp1251",$str));
 
бред какой-то, только что проверил - всё нормально считает.

PHP случайно не 4?
 
masto, ну в теории -- да, на то он и strlen, чтобы количество символов возврашать, а не количество занимаемой памяти.
но я на всякий привёл пример перекодироавния.
 
ТС, не может быть такого... проверили на непечатаемые символы (\n,\r,\t)?
 
Все перепроверял
Я слыхал что юникод гораздо больше занимает памяти ведь он поддерживает на порядок больше символов.

Блин, как вы проверяете что у вас все нормально выходит?
 
Причем тут размер памяти? Тебе ведь количество символов нужно.

Если на ламерский переводить - то количество машин песка тебе нада, а ты меряешь в тоннах песок :)
 
Выходит что strlen() именно кол-во байтов меряет
других объяснений у меня нет
 
мысли:
1. PHP ниже 5 версии
2. в системе не установлена UTF-локаль.
3. сервер указывает неверную кодировку текста.

Выходит что strlen() именно кол-во байтов меряет
других объяснений у меня нет
например слово 'тест' если нет поддержки UTF выглядит как 'тест', соответственно strlen() вернёт 8, а не 4.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху