Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Изготовление сайтов


Ответ
 
Опции темы Опции просмотра
Старый 25.04.2013, 11:20   #1 (permalink)
mirra88
Member
 
Регистрация: 06.02.2012
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию mb_strtolower, strtolower, stripos и др. не работают с русскими символами

Уважаемые форумчане, доброго времени суток. Проблема проявилась таким образом.
Когда я ввожу в код php строки, то они выводятся на экран нормально, но стоит обработать их функциями mb_strtolower, strtolower, stripos и некоторыми другими и строки сразу же превращаются в вопросы. Например если я введу:
Код:
$A="мяч";
echo $B="Наш мячик очень оригинальный!";
то $B в таком же виде, как я ввела и будет отображена на экране. Но уже попытка преобразовать строку к нижнему регистру:
Код:
echo $loveTextB= mb_strtolower($B);
приведёт к тому, что на экране $loveTextB отобразится вот так: ��� ����� ����� ������������!
В итоге результат работы функций непредсказуем. Например, попытка найти первую позиции вхождения в $B подстроки $A:
Код:
echo $pos=stripos($loveTextB, $loveTextA);
или
Код:
echo $pos=stripos($B, $A);
приведёт к выводу числа 7, что абсолютно не соответствует действительности. И я подозреваю, что это из-за этой вот петрушки с кодировками. Потому что если я перехожу на английский регистр, то всё становится нормально. И перевод к нижнему регистру строку не меняет и номера позиций правильно выдаются.

Тестирую на Denver, PHP Version 5.2.12. В настройках сервера стоит:
Код:
character_set_client 	utf8
character_set_connection 	utf8
character_set_database 	cp1251
character_set_filesystem 	binary
character_set_results 	utf8
character_set_server 	cp1251
character_set_system 	utf8
Кодировка в разделе для мета тегов указана:
Код:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ;
В cкрипте настроек php прописаны команды:
Код:
header('Content-Type: text/html; charset= utf-8');
и
Код:
setlocale(LC_ALL, 'Russian_Russia.65001');
Подключен файл .htaccess со строкой:
Код:
AddDefaultCharset utf-8
Никто не знает почему некоторые функции php так реагируют на русскую кодировку и как этот момент можно исправить или обойти?
mirra88 вне форума   Ответить с цитированием

Старый 25.04.2013, 11:20
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Пока вы ждете ответов в вашу тему, можете ознакомиться с этими темами

Задача на работу с символами и строками
На передней панели не работают USB, звуковые порты работают
Файл с символами
Проблема с символами
Не работают USB
Помогите, белое поле с символами на экране

Старый 25.04.2013, 14:11   #2 (permalink)
mirra88
Member
 
Регистрация: 06.02.2012
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

P. S. С помощью советов на других форумах проблему удалось решить таким способом:
1 В скрипт php добавила строку указывающую настройки действующие на все мульбайтовые функции: [code=htmlphp][mb_internal_encoding("UTF-8");[/code]
2 Вместо функции stripos стала использовать mb_stripos.

Для функции mb_strtolower можно ещё явно добавить кодировку, с которой она должна работать
[code=htmlphp]echo $loveTextB= mb_strtolower($B,'utf-8');[/code]
mirra88 вне форума   Ответить с цитированием
Старый 25.04.2013, 20:36   #3 (permalink)
GlaZZZ
Любитель
 
Аватар для GlaZZZ
 
Регистрация: 19.01.2011
Сообщений: 4,792
Записей в дневнике: 6
Сказал(а) спасибо: 105
Поблагодарили 28 раз(а) в 10 сообщениях
Репутация: 13067
По умолчанию

Молодец, что сама решила!

У тебя просто кодировка разная была
GlaZZZ вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 14:28.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.