Непонятки с размером стринга после смены кодировки

jeno

Новичок
Непонятки с размером стринга после смены кодировки

Здравствуйте )

у меня следующая проблемка...
перевел весь сервер на с CP1251 на UTF8

открываю страницу (не важно какая CMS), какие-то непонятные глюки (не с символами, а с CMS), ковырял около часа...

а итоге получил:

Notice: unserialize() [function.unserialize]: Error at offset 138 of 359 bytes in /usr/home/...

(для тех кто не знает, функция раскладывает строку "a:3:{i:0;s:20:"Список пользователей";i:1;s:10:"users_list";i:2;s:1:"6";}" в массив/объект...превращает массив в строку функцией serialize)

так вот, если посчитать, то "Список пользователей" это 20 символов...но оно показывает что 39 =\ даже
PHP:
print strlen("Список пользователей");
показывает 39

знаю что UTF8 вмещает в себя больше символов (т.к.международной считается) чем 1251..от этого и размер больше...

но хм..это такой умный РНР или у меня что-то не так? привык к тому что если я вижу 20 символов в словосочетании, их должно быть именно 20 ) (если прикинуть...то какие проблемы могут всплыть..например в функции обрезания текста и т.д. и т.п. где используется strlen \= )

вообщем, хотел спросить, так должно быть? =\ или я что-то не так сделал? (возможно какие-то кодировки где-то)

п.с.в mysql кодировка БД, таблицы, полей, и соединения UTF-8 :rolleyes:

Заранее всем спасибо!
 

x-yuri

Новичок
jeno ты же strlen не сообщаешь, в какой он кодировке? А в зависимости от кодировки количество символов будет разное
 

jeno

Новичок
значит strlen всетаки возвращает размер затраченой памяти, а не кол. символов в строке =\
хех...

а какие есть альтернативы? (желательно как можно меньше изврата ) )

например mb_strlen, в ней нужно указать кодировку...но для этой функции нужен отдельный модуль (( mb_string, как думаете, стоит на ней остановится? (не знаю как с этим модулем на хостингах ( )
 

HraKK

Мудак
Команда форума
jeno
значит strlen всетаки возвращает размер затраченой памяти, а не кол. символов в строке =\
Именно символов. ТОлько в утф символ кодируется от 1 до 4 символов.
 

HraKK

Мудак
Команда форума
1-4 байтом, так яснее?

-~{}~ 16.03.09 01:08:

Понял)) ночь-с ))
 
Сверху