Ответ 1
Взгляните на utf8_encode() и utf8_decode(). Также рассмотрите функции многобайтовых строк.
У меня есть форма с одним текстовым полем (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'");
Если вышеуказанное не работает, используйте функции encode/decode utf8:
<?
$string ="Étuit";
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<?
echo $string; // echo '?tuit'
echo utf8_encode($string); // echo 'Étuit'
?>
Не беспокоить SET NAMES перед каждым соединением в коде, можно использовать параметр в строке подключения mysql:
"jdbc:mysql://hostAddress:port/databaseName?characterEncoding=UTF-8"
В этом сообщении объясняется, как настроить и работать с UTF-8 в 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);
}