Проблемы с хранением нелатинских символов в базе данных mysql - PullRequest
0 голосов
/ 29 октября 2011

В настоящее время я запускаю honeypot для ловли спамеров на форуме, и у меня возникают проблемы с хранением нелатинских символов в моей базе данных, у меня установлен utf8_unicode_ci на уровне базы данных и таблицы, и я использую mysql_query ("SET NAMES 'utf8'"), чтобы убедиться, что информация отправляется как utf8.

Информация, такая как время, хранится как int.IP-адрес, имя пользователя и т. Д. Хранятся в виде Varchar и текста, единственная разница с данными спама заключается в том, что я использую base64_encode (htmlspecialchars ()) перед тем, как вставить данные, и что столбец спама хранится в среднем двоичном объекте, а я использую COMPRESS () в запросе для этого столбца.

С латинскими символами он возвращает правильные данные, но с нелатинскими символами, такими как русский и тайский, он не возвращает правильных данных.

Например,:

Уровня конечного начальники или не

Вернется как:

Ð£Ñ€Ð¾Ð²Ð½Ñ ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ð³Ð¾ начальнÐ

или просто бриллианты с вопросительными знаками на них.

Мне удалось правильно сохранить эту информацию много лет назад, когда я создалфорум, но я не могу вспомнить, как мне удалось правильно его сохранить, я искал весь день и не смог найти решение, которое бы сработало для меня.

Редактировать: дополнительная информация, если она естьhelp.

  • Apache / 2.2.14 (Ubuntu)
  • Версия клиента MySQL: 5.1.41
  • Расширение PHP: php5-mysql

1 Ответ

1 голос
/ 31 октября 2011

Оказывается, что на странице, которая отправляет спам-сообщения с моих доменов в основной хаб, не было header("Content-Type: text/html; charset=utf-8"); Так что, когда был сделан запрос к странице, она там была повреждена.

...