У меня есть форма с одним текстовым полем (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); }