<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

В начале курса у нас будет только идея, а в конце готовый продукт, который можно использовать в практических целях.

В рамках упражнений курса Вы параллельно со мной будете создавать свою большую программу на Java, что даст Вам необходимую практику, после которой для Вас уже не будет разницы, какого размера создавать программы.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

mb_strtolower, strtolower, stripos и др. не работают с русскими символами
25.04.2013 10:18:50 mb_strtolower, strtolower, stripos и др. не работают с русскими символами Сообщение #1
mirra

mirra

Новичок

Новичок

Дата регистрации:
25.04.2013 10:13:23

Сообщений: 8

Уважаемые форумчане, доброго времени суток. Проблема проявилась таким образом.
Когда я ввожу в код 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 так реагируют на русскую кодировку и как этот момент можно исправить или обойти?
Профиль Ответить
25.04.2013 11:13:15 mb_strtolower, strtolower, stripos и др. не работают с русскими символами Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Поставить в начале скрипта: mb_internal_encoding("UTF-8";
Профиль Ответить
25.04.2013 12:46:18 mb_strtolower, strtolower, stripos и др. не работают с русскими символами Сообщение #3
mirra

mirra

Новичок

Новичок

Дата регистрации:
25.04.2013 10:13:23

Сообщений: 8

Спасибо. Так и сделала. Но этого оказалось мало. Я же ещё функцию stripos использовала, а надо было mb_stripos! И если для mb_strtolower можно явно добавить кодировку, с которой она должна работать (как мне советовали на других форумах):
echo $loveTextB= mb_strtolower($B,'utf-8');То для mb_stripos этого уже не сделать, а остаётся действительно только добавление в начало скрипта строки которая указывает настройки действующие на все мульбайтовые функции!
Профиль Ответить