Я пытаюсь сохранить французские акценты в своей базе данных, но они не сохраняются, как в DB.
Например, «é» сохраняется как «Ã ©».
Я попытался установить мои файлы в «Unicode (utf-8)», поля в БД «utf8_general_ci», а также сам БД.
Когда я смотрю на мои данные, отправленные через AJAX с Firebug, я вижу, что акцент передан как «é», так что это правильно.
Спасибо и дайте мне знать, что вам нужна дополнительная информация!
Лично я решил ту же проблему, добавив после кода подключения MySQL :
mysql_set_charset("utf8");
или: mysqli_set_charset("utf8");
или эквивалент POO : $mysqli_link->set_charset("utf8");
И иногда вам нужно будет определить основную кодировку php , добавив этот код: mb_internal_encoding('UTF-8');
На стороне клиента HTML вы должны добавить следующие данные заголовка:
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
Чтобы использовать результаты JSON AJAX (например, с помощью jQuery), вы должны определить заголовок, добавив:
header("Content-type: application/json;charset=utf8"); json_encode( some_data );
Это должно сделать трюк
Лучше всего, чтобы ваше соединение с базой данных не кодировалось в кодировке UTF-8 – обычно это ISO-8859-1 по умолчанию.
Попробуйте отправить запрос
SET NAMES utf8;
после подключения.
mysqli_set_charset ($ conn, "utf8");
если вы используете PDO, вы должны создать такой способ:
new \PDO("mysql:host=$host;dbname=$schema", $username, $password, array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
Просмотрели ли вы http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html :
Клиентские приложения, которые должны взаимодействовать с сервером с помощью Unicode, должны соответственно установить набор символов клиента; например, путем выдачи инструкции SET NAMES 'utf8'. ucs2 не может использоваться в качестве набора символов клиента, а это означает, что он не работает для SET NAMES или SET CHARACTER SET. (См. Раздел 9.1.4, «Наборы символов набора символов и сортировки».)
Кроме того:
если вы получаете данные через php из вашего mysql-db (все utf-8), но все равно получаете?? для некоторых специальных символов в вашем браузере (), попробуйте следующее:
после mysql_connect () и mysql_select_db () добавьте следующие строки: mysql_query ("SET NAMES utf8");
работал на меня. Я сначала попытался использовать utf8_encode, но это работало только для äüöéè … и так далее, но не для кириллических и других символов.
Используйте UTF8:
Установите мета в своем
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
Когда вы подключаетесь к своей базе данных mySQL, принудительно кодируйте, чтобы вы НЕ ДОЛЖНЫ играть с настройками mysql
$conn = mysql_connect('server', 'user', 'password') or die('Could not connect to mysql server.'); mysql_select_db('mydb') or die('Could not select database.'); mysql_set_charset('utf8',$conn); //THIS IS THE IMPORTANT PART
Если вы используете AJAX, установите кодировку следующим образом:
header('Content-type: text/html; charset=utf-8');
Вам необходимо: a) убедиться, что ваши таблицы используют кодировку символов, которая может кодировать такие символы (UTF-8 имеет тенденцию быть кодировкой go-to в эти дни), и b) убедитесь, что ваши сообщения форм отправляются в базу данных в то же кодирование символов. Вы делаете это, сохраняя свои HTML / PHP / любые файлы как UTF-8 и включая в себя метатег в голове, который сообщает браузеру использовать кодировку UTF-8.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
О, и не забывайте, C, когда вы подключаетесь к базе данных, убедитесь, что на самом деле вы используете правильный набор символов, выполнив SET NAMES charset = utf8 (возможно, это не правильный синтаксис, мне нужно будет посмотреть, что это должно быть, но это будет по этим направлениям)
PHP (.net) советует не устанавливать кодировки после подключения с помощью запроса, например SET NAMES utf8, потому что ваша функция для экранирования данных внутри операторов MySQL может работать не так, как предполагалось.
Не используйте SET NAMES utf8, но используйте соответствующую функцию (или метод) …_ set_charset () вместо этого, если вы используете PHP.