У меня есть небольшое приложение ajax, построенное на php.
Используя phpMyAdmin, я установил для базы данных mysql значение utf-8 и импортировал в нее текстовый файл, содержащий данные utf-8.
Это отлично работало на машине Windows с easyphp после добавления character-set-server = utf8 и default-character-set = utf8 в файл my.cnf.
Теперь я попытался переместить это на рабочий сервер, где у меня нет доступа к файлу конфигурации, а такие символы, как умляуты, не отображаются.
Есть ли что-то, что можно установить в php-коде (а не в файле конфигурации), чтобы исправить это, или какую-то команду, которую я могу дать mysql?
Я попробовал ALTER DATABASE vweb_50 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin с помощью phpMyAdmin, чтобы попробовать из utf8_general_ci, но это не имело никакого значения.






Здесь нужно сделать несколько вещей, и я не уверен, что правильно понимаю вашу проблему, но если я это сделаю, я думаю, что большую часть ее можно решить с помощью функций PHP utf8_encode и utf8_decode:
Кроме того, при необходимости посмотрите htmlentities.
Привет, Дэйв, вы имеете в виду что-то вроде htmlentities ($ rows [] = $ row); ?
Привет, Джош, я имел в виду, что в строке $ rows [] = $ row переменная $ row сама по себе является массивом, поэтому вам нужно будет сделать что-то вроде: $ out = new array (); foreach ($ row as $ k => $ v) {$ out [$ k] = htmlentities ($ v); } $ rows [] = $ out;
Если вы используете utf-8 во всем приложении (что я бы рекомендовал), вам не нужны функции utf8_encode / decode. Вы проверили, в какой кодировке отображается ваша страница? Вероятно, сервер настроен на отправку iso-8859-1 в виде кодировки, в то время как ваша тестовая среда отправляет utf-8. Установите кодировку с помощью заголовка Content-Type:
header("Content-Type: text/html; charset=utf-8");
Страницы, которые создают символы, являются частью более крупного приложения ajax, а не главной страницы. Установка заголовка для "грабберной" страницы ничего не решает.
Вам необходимо убедиться, что вы отправляете правильный заголовок со всех своих страниц, включая те, которые вы достигли через xhr.
Привет, Джош, я так не думаю. Вы хотите использовать htmlentities или utf8_encode в строке $ rows [] = $ row;, но немного измените его, чтобы вы могли использовать это поле для каждого поля. Или не используйте его в этой функции, но как только вы будете готовы его отобразить.