Intereting Posts
Интеграция PHP-сайта с аутентификацией пользователя WordPress Переменная PHP не отображается на странице через ajax jquery Поиск критериев на основе TextField и меню списка Symfony2 Неопределенный метод. Имя метода должно начинаться с findBy или findOneBy Загрузка изображения на facebook PHP-функции и субдомены Разбирайте HTML и получите многомерный массив с датой с использованием регулярного выражения (скребущие данные)? Как перенаправить на динамический URL-адрес в javascript PHP: Правильный способ объявить переменную перед использованием в цикле Получить элементы заказа и WC_Order_Item_Product в Woocommerce 3 net :: ERR_EMPTY_RESPONSE, когда сообщение с ajax Каков наилучший способ отправки массива JavaScript в PHP-скрипт с помощью GET? Как использовать jquery для автозаполнения с именами пользователей для приложения для сообщений? Образец обрезки PHP в форме, отличной от квадратной, как овальная форма или круглый Использование mssql-методов (FreeTDS, PHP и Apache для Mac OS X)

Обработка значений unicode в параметрах GET с помощью PHP

У меня есть следующий тестовый скрипт на моем сервере:

<?php echo "Test is: " . $_GET['test']; ?> 

Если я назову его URL-адресом, например example.com/script.php?test=ɿ (ɿ, являющимся многобайтовым символом), результирующая страница выглядит следующим образом:

Тест: É¿

Если я попытаюсь сделать что-либо со значением в $ _GET ['test'], например, сохранить его в базе данных mysql, у меня такая же проблема. Что мне нужно сделать, чтобы PHP правильно обработал это значение?

Вы сказали пользовательскому агенту, что ваш ответ HTTP – UTF-8?

 header ('Content-type: text/html; charset=utf-8'); 

Вы также можете убедиться, что ваша разметка HTML также объявляет кодировку, например

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

Для вашей базы данных установлены ваши таблицы и настройки клиента mysql для UTF-8? Если вы проверите свою базу данных с помощью клиента командной строки mysql, будет ли ваша среда терминала настроена на ожидание UTF-8?

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

UTF-8 на всем пути …


Выполните следующие действия:

  • SET NAMES 'utf8' при подключении к MySQL DB
  • <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> в вашем HTML

Вставляя URL-адрес в браузере, который содержит высокие символы utf8, браузер будет перекодировать символы utf8 в многобайтную последовательность, совместимую с RFC 3986, и вы не получите символов utf8 в php.

НО, php получит и отобразит символы utf8 из url правильно, если страница, которая вызывает ваш url, кодируется utf8.

Попробуйте вызвать свой php для теста следующим образом:

 <iframe src="example.com/script.php?test=ɿ" height="100" width="100" border="1"></iframe>