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

Ответ 2

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

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

Ответ 3

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

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'
?>

Ответ 4

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

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

Ответ 5

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

UTF-8 Primer для PHP и MySQL

Ответ 6

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

В заголовках 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'");

Ответ 7

Я просто использую метод 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);
}