Подтвердить что ты не робот

Сохранить акценты в базе данных MySQL


Я пытаюсь сохранить французские акценты в своей базе данных, но они не сохраняются, как в DB.
Например, "é" сохраняется как "Ã ©".
Я пытался установить мои файлы в" Unicode (utf-8) ", поля в БД" utf8_general_ci ", а также сам БД.
Когда я смотрю на мои данные, через AJAX с Firebug, я вижу, что акцент передан как "é", поэтому он исправляется.

Спасибо и дайте мне знать, что вам нужна дополнительная информация!

4b9b3361

Ответ 1

Лично я решил ту же проблему, добавив после код подключения MySQL:

mysql_set_charset("utf8");

или для mysqli:

mysqli_set_charset($conn, "utf8");

или аналог ООП MySQL:

$conn->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
);

Это должно сработать

Ответ 2

Лучше всего, чтобы ваше соединение с базой данных не кодировалось в кодировке UTF-8 - обычно это ISO-8859-1 по умолчанию.

Попробуйте отправить запрос

SET NAMES utf8;

после подключения.

Ответ 3

mysqli_set_charset($conn, "utf8");

Ответ 4

если вы используете PDO, вы должны управлять таким образом:

new \PDO("mysql:host=$host;dbname=$schema", $username, $password, array(\PDO::MYSQL_ATTR_INIT_COMMAND =>  'SET NAMES utf8') );

Ответ 5

Вы просмотрели http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html:

Клиентские приложения, которые должны общаться с сервером, используя Юникод должен установить клиент набор символов соответственно; для например, путем выпуска SET NAMES 'utf8' выражение. ucs2 не может использоваться как клиентский набор символов, что означает, что он не работает для SET NAMES или SET НАБОР СИМВОЛОВ. (См. Раздел 9.1.4, "Наборы символов соединения и Параметры сортировки".)

Кроме того:

если вы получаете данные через php из своего mysql-db (все utf-8), но все же получить '?' для некоторых специальных символов в ваш браузер(), попробуйте следующее:

после mysql_connect() и mysql_select_db() добавить следующие строки: mysql_query ( "SET NAMES utf8" );

работал у меня. я сначала попробовал utf8_encode, но это работало только для äüöéè... и так далее, но не для кириллицей и другими символами.

Ответ 6

Используйте 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');

Ответ 7

Вам необходимо: а) убедиться, что ваши таблицы используют кодировку символов, которая может кодировать такие символы (UTF-8 имеет тенденцию быть в настоящее время кодировкой) и b) убедитесь, что ваши сообщения формы отправляются на база данных в той же кодировке символов. Вы делаете это, сохраняя свои HTML/PHP/любые файлы как UTF-8 и включая в себя метатег в голове, который сообщает браузеру использовать кодировку UTF-8.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

О, и не забудьте C, когда вы подключаетесь к базе данных, убедитесь, что на самом деле вы используете правильный набор символов, выполнив SET NAMES charset = utf8 (может быть, не правильный синтаксис, мне придется посмотрите, что это должно быть, но это будет в этих строках)

Ответ 8

PHP (.net) советует не устанавливать кодировки после подключения с помощью запроса, например SET NAMES utf8, потому что ваша функция для экранирования данных внутри операторов MySQL может работать не так, как предполагалось.

Не используйте SET NAMES utf8, но используйте соответствующую функцию (или метод)..._ set_charset() вместо этого, если вы используете PHP.