Intereting Posts
Создайте страницу WordPress, перенаправляющую на другой URL-адрес Symfony NelmioApiDocBundle swagger-ui PHP Аннотации объекта json с массивом свойств объектов, не показывающих Запуск beanstalkd рабочего на удаленном сервере Сложность получения google плюс один счет Как отключить / включить плагины? отключить javascript коды, используя php? PHP Специальная функция SMTP-почты Возврат ERROR fputs send bytes failed errno = 32 Разбитая труба Что Apache должен поддерживать как mysqli, так и PDO? fgetcsv не является правилом данных разбиения mysql_fetch_assoc (): предоставленный аргумент не является допустимым ресурсом результатов MySQL Как сбросить автоматическое приращение при удалении пользователя laravel? Преобразование HTML в PDF (не PDF в HTML) с использованием PHP Загрузить файл из непубличной html-папки с php Проверить, содержит ли строка слово в PHP? Логика для уже существующей проверки записи, но только в случае обновленных значений формы

Проблема с 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); }