Набор символов горе - PullRequest
       29

Набор символов горе

1 голос
/ 15 января 2009

У меня есть небольшое ajax-приложение, созданное на php.

Используя phpMyAdmin, я установил базу данных mysql в utf-8 и импортировал в нее текстовый файл, содержащий данные utf-8.

Это нормально работало на машине с Windows с easyphp, после добавления набора символов набора символов = utf8 и набора символов по умолчанию = utf8 в файл my.cnf.

Я сейчас попытался переместить это на рабочий сервер, где у меня нет доступа к файлу конфигурации, и такие символы, как умляуты, не отображаются.

Есть ли что-то, что можно установить в php-коде (не в файле конфигурации), чтобы это исправить, или какую-то команду, которую я могу дать mysql?

Я попытался использовать ALTER DATABASE vweb_50 УСТАНОВКА ПО УМОЛЧАНИЮ ПО УМОЛЧАНИЮ utf8 COLLATE utf8_bin с phpMyAdmin, чтобы попробовать utf8_general_ci, но это не имело никакого значения.

Ответы [ 2 ]

1 голос
/ 15 января 2009

Здесь нужно сделать пару вещей, и я не уверен, что правильно понимаю вашу проблему, но если я это сделаю, я думаю, что большинство из них можно решить с помощью функций PHP utf8_encode и utf8_decode

  • utf8_encode
    • Кодирует строку ISO-8859-1 в UTF-8
  • utf8_decode
    • Эта функция декодирует данные, предположительно кодированные в UTF-8, в ISO-8859-1.

Кроме того, посмотрите на htmlentities , если необходимо.

0 голосов
/ 16 января 2009

Если вы используете utf-8 во всем приложении (что я бы порекомендовал), вам не нужны функции utf8_encode / decode. Вы проверили, в какой кодировке находится ваша страница? Возможно, сервер настроен на отправку iso-8859-1 в виде кодировки, а тестовая среда отправляет utf-8. Установите кодировку с заголовком Content-Type:

header("Content-Type: text/html; charset=utf-8");
...