Двойная кодировка UTF-8, но почему? PHP / MySQL - PullRequest
3 голосов
/ 03 мая 2011

У меня есть несколько форм, которые вставляют некоторые данные в базу данных MySQL, и по какой-то причине символы получают двойное кодирование utf-8.Вы не видите его на внешнем интерфейсе моего сайта, но на заднем плане вы видите, если я смотрю на данные из phpmyadmin, они дважды кодируются.

Кроме того, для отображения данных, введенных изphpmyadmin мне нужно utf8_encode это.

Если я использую uft8_decode() в своих данных, прежде чем помещать их в свою базу данных, это работает, но тогда мне придется снова использовать utf8_encode(), чтобы отобразить мойправильные данные, и я хотел бы найти лучшее решение, переписывающее большую часть моего кода.

Символы, с которыми я имею дело, - это датские æ, ø и å символы.

У меня есть все настройки, которые я могу найти в php.ini, для установки в utf-8, все, что я могу найти в phpmyadmin для utf8, для мета-тега html в utf-8, и все же у меня есть эта ошибка, с которой нужно иметь дело.

Итак, мой вопрос: кто-нибудь знает, почему это происходит, или как я могу это исправить? ..

Обновление: После запуска кода MySQL, предложенного Яко, данные должным образом закодированыв конце базы данных, когда она поступает из внешнего интерфейса, но мне все еще нужно запустить utf8_encode() для правильного отображения данных на интерфейсе, есть идеи? ..

Обновление 2: Опять после запуска кода из ответа на этот вопрос У меня все еще были проблемы, кодировка была теперь включена и выключена utf8, и я подозреваю, что phpmyadmin для сброса кодировки как-то.Я нашел новый способ ведения дел, и он работает безупречно, описанный в моем ответе ниже ...

Ответы [ 2 ]

5 голосов
/ 03 мая 2011

Я сталкивался с подобными проблемами в прошлом, и это помогло мне.

mysql_query("SET names UTF8");
2 голосов
/ 03 мая 2011

Хорошо, я нашел ответ !! Я искал немного больше (делал это часами) и нашел этот вопрос: Использовать ли «SET NAMES»

Используя ответ на этот вопрос, я запустил этот запрос:

mysql_query("SET character_set_client = UTF8");
mysql_query("SET character_set_results = UTF8");
mysql_query("SET character_set_connection = UTF8");
mysql_query("SET names UTF8");

Вот и все, теперь он отлично работает на всех моих PHP-скриптах. Тем не менее, спасибо Jako за то, что он меня правильно вел. ;)

Обновление: Хорошо, поскольку кодирование было включено и выключено, а настройки не остались такими, я нашел новое решение, которое работает. Я добавил mysql_set_charset () в свой скрипт подключения:

mysql_set_charset("UTF8");

Он каждый раз дает мне правильные данные из базы данных и вставляет правильные данные, так что это была только одна строка кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...