Вопрос

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

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

Это отлично работало на машине Windows с easyphp после добавления символов-set-server=utf8 и default-character-set=utf8 в файл my.cnf.

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

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

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

Это было полезно?

Решение

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

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

Также ознакомьтесь HTMLentities если нужно.

Другие советы

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

header("Content-Type: text/html; charset=utf-8");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top