Проблемы с набором символов
-
22-07-2019 - |
Вопрос
У меня есть небольшое приложение 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");