Intereting Posts
CKEditor, отображающий HTML-теги в редакторе Разрешение отклонено mkdir для cron и браузера Создайте новый magento Rest api, чтобы получить список категорий в magento Что быстрее в PHP, одинарные или двойные кавычки? Лучше ли иметь две отдельные пользовательские таблицы или одну? Отобразить установленный флажок в форме для формирования отправки POST Добавление данных в файл XML "Preg_match (): Ошибка компиляции: несогласованные скобки" в PHP для допустимого шаблона Скрытие категории корней и отображение подкатегорий в качестве меню изменить метод / функцию во время выполнения В PHP, как я могу добавить нумерованную цифровую строку и сохранить нулевое дополнение? Предоставление загруженных изображений уникальному имени для mysqli Можете ли вы повторно использовать набор результатов mysql в PHP? Сортировка узлов XML с помощью PHP как использовать json_encode

Проблема с PHP и Mysql UTF-8 (особый характер)

У меня есть форма с одним текстовым полем (ProductTitle)

если я напишу в качестве примера «Étuit» в текстовом поле и нажмите «Сохранить», я отправлю данные в таблицу Product. Результат int database для ProductTitle – это Ã ‰ tuit. Меня беспокоит особый характер. Вместо того, чтобы помещать É в базу данных, я понял, что Ã ‰

Когда я загружаю название продукта («Étuit») из базы данных в диапазон. Это верно.
НО, когда я загружаю его в текстовое поле для редактирования названия продукта, которое показывает Ã ‰ tuit.

Кто-нибудь знает, почему.

Я помещаю это в html head

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

Примечание. Когда я нажимаю «Сохранить» в форме, данные публикуются с помощью метода jquery ajax.

Взгляните на utf8_encode () и utf8_decode () . Также рассмотрим многобайтовые строковые функции .

Вероятно, что происходит, так это то, что набор символов по умолчанию для клиента не установлен в UTF-8, поэтому вы получаете трансляцию в одном или другом направлении. Это описано здесь несколькими способами :

Часто запрос инициализации «SET NAMES utf8» сразу после создания соединения решает проблему, но убедитесь, что то, что вы считаете сохраненным (utf8), фактически является тем, что было сохранено. У вас может быть работа по очистке, если нет.

Попробуйте установить клиентскую кодировку перед использованием БД.

 mysql_query("SET NAMES 'utf8'"); 

Если вышеописанное не работает, используйте функции кодирования / декодирования utf8:

 <? $string ="Étuit"; ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <? echo $string; // echo's '?tuit' echo utf8_encode($string); // echo's 'Étuit' ?> 

Чтобы не беспокоиться о SET NAMES перед каждым соединением в коде, можно использовать параметр в строке подключения mysql:

 "jdbc:mysql://hostAddress:port/databaseName?characterEncoding=UTF-8" 

В этом сообщении объясняется, как настроить и работать с UTF-8 в PHP и MySQL. Надеюсь, это экономит ваше время.

UTF-8 Primer для PHP и MySQL

Эти работы для меня:

В заголовках HTML:

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

После подключения PHP:

 $conexion = @mysql_connect($servidor, $usuario, $contrasenha); mysql_select_db($BD, $conexion) or die(mysql_error($conexion)); mysql_query("SET NAMES 'utf8'"); 

Я просто использую метод set_charset, когда я использую mysqli lib.

 error_reporting(E_ALL); $mysqli = new mysqli('localhost', 'login', "pass", 'database'); if ( ! $mysqli->set_charset("utf8") ) { printf("Error loading character set utf8: %s\n", $mysqli->error); }