2010-10-04 3 views
9

Как я могу остановить mysql от преобразования ' в ’, когда я вставляю?Mysql превращается в «â € ™?

Я верю, что это как-то связано с кодировкой или чем-то еще?

Я использую php для выполнения mysql_insert.

+1

Это связано с кодировками. Как вы вставляете/извлекаете данные - например, какую библиотеку и язык программирования (или, возможно, ORM) вы используете? – AndiDog

+0

Какая кодировка является вашей базой данных? – RobertPitt

+1

Да, это связано с кодировкой. Проверьте кодировку таблицы и строку подключения. Используйте правильную кодировку или unicode/utf. – codymanix

ответ

13

Одиночной кавычки вы вывесили называется «acute accent», который часто переходит из общей одинарной кавычки некоторых веба-приложениями. Это символ UTF8, который при вставке в базу данных Latin-1 переводится в «â €». Это означает, что вам необходимо изменить charset MySQL на UTF8 или, альтернативно, изменить кодировку вашего сайта до Latin-1.В первом случае предпочтительнее:

ALTER DATABASE YourDatabase CHARACTER SET utf8; 
ALTER TABLE YourTableOne CONVERT TO CHARACTER SET utf8; 
ALTER TABLE YourTableTwo CONVERT TO CHARACTER SET utf8; 
... 
ALTER TABLE YourTableN CONVERT TO CHARACTER SET utf8; 
+0

Я сделал это, и теперь таблица utf8_general_ci, но я все еще получаю ту же проблему? – Hailwood

+0

Выполняет '' ' – Hailwood

+1

@Hailwood: вы также должны проверить кодировку соединения. – AndiDog

0

Возможно, кто-то сразу узнает ответ, но я этого не сделаю. Однако вот несколько советов о том, что для изучения (и, возможно, расширить вопрос о)

При работе с кодировками и спасаясь вы должны включать в себя полную историю данных

  • , как он был создан
  • , что произошел с ним перед проблемой (нужно было выполнить резервное копирование, электронную почту, было ли это создано на другом сервере, ОС и т. д., если оно было передано, было ли это текстовым файлом?)

Вышеупомянутое объясняется тем, что все, что записывается в текстовый файл (браузер, клиент mysql, веб-сервер, приложение php, чтобы назвать несколько слоев, которые могли бы это сделать) могут испортить кодирование символов.

Для устранения, вы можете начать устранение, и, таким образом, первый шаг (в моей книге), является

  1. подключиться к MySQL сервер MySQL с помощью клиента командной строки.
  2. проверить выход SHOW VARIABLES LIKE 'character_set%'
    (так что даже в этой простой среде у вас есть 7 значений, которые могут повлиять, как данные обрабатываются, то сохраняются и/или отображаются
  3. инспектировать SHOW CREATE TABLE TableName, и искать кодировку и сортировку информацию, как по умолчанию для таблицы и явное определение в столбцах

Сказанное выше, я не думаю, что любой западный скрипт перекодировал бы один символ кавычки. .

EDIT Большинство из вышеперечисленнога от ответа и обсуждения here

1

Это то, что я сделал, и он работал на меня:

  1. Сначала убедитесь, что столбец, содержащий 'является utf8_general_ci

  2. Затем добавить mysql_set_charset к коду

    $db=mysql_connect("localhost", $your_username, $your_password); 
    mysql_set_charset('utf8',$db); 
    mysql_select_db($your_db_name, $db); 
    
+0

тоже работал для меня :) спасибо –

Смежные вопросы