Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Проблема с кодировкой или strlen() не считает (https://javascript.ru/forum/server/12856-problema-s-kodirovkojj-ili-strlen-ne-schitaet.html)

greatilya 05.11.2010 18:56

Проблема с кодировкой или strlen() не считает
 
Возникла такая загвоздка:
В переменной $a храниться значение "воды" (полученное из БД)
echo strlen($a);

Выведет на экран 5 ... а то и 6
Эту проблему решил так:
echo mb_strlen($a);

Выводит как положено 4.

Но тут возникла необходимость воспользоваться следующим:
Значения переменных: $s1="вхды" и $s2="воды"
echo similar_text($s1, $s2);

Выводит 6, а должно быть 3.
Примечание: $s1 и $s2 получены из БД.

PS, укажу максимум данных:
в коде прописано:
mb_internal_encoding('UTF-8');
setlocale(LC_ALL, 'ru_RU.UTF-8');

К БД подключаясь указываю такую кодировку: SET NAMES UTF8
В БД кодировка строк utf8_general_ci
Кодировка файла со скриптом UTF-8 (без BOM)

micscr 06.11.2010 08:49

Работать с утф строками надо только через функции mb_ .
Но там есть аналоги не всем строковым функциям. Как например similar_text. Варианты:
1) поискать готовенькую реализацию этой функции
2) написать самому
3) для сравнения можно перекодировать в cp1251 функцией iconv и уже их сравнить через similar_text

greatilya 06.11.2010 10:00

micscr,
Спасибо!


Часовой пояс GMT +3, время: 01:27.