Задать вопрос
@falcon_sapsan
DevOps

Почему из POST запроса на AJAX в PHP приходит кодированный текст?

запрос отправляю следующим образом:

$.post("ajax.php",
        {
          act: "avatar",  
          persname: $("#persname").val()
        },
        onAjaxSuccess
      );


на стороне PHP обрабатываю
htmlspecialchars($_POST['persname']);

Пробовал persname обрабатывать encodeURIComponent, а на стороне PHP декодировать строку (urldecode)... все равно получаю строку виду \xd1\x82\xd0\xb5\xd1\x81\xd1\x82

Причем локально работаю на Ubuntu - все нормально.
Загружаю на сервер.. получаю проблему с кодировкой текста в запросе.
Как исправить?
  • Вопрос задан
  • 368 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@falcon_sapsan Автор вопроса
DevOps
Проблема решена.
Локально БД создавалась через phpmyadmin - и выбиралась кодировка UTF-8.
При переносе на сервер, БД создавалась вручную из консоли, без явного указания кодировки базы, поэтому БД была в кодировке latin...
В созданную базу импортировались существующие таблицы, которые были в верной кодировке utf8_general_ci.
Несмотря на то что таблицы были в верной кодировке - кодировка ломалась.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
veydlin
@veydlin
Мне никогда не жалко средств на свое любопытство
Может, кодировки страницы и скрипта разные?
А вы знали, что при отправке $.post весь текст автоматически кодируется в UTF-8? Может в этом дело?
Ответ написан
Комментировать
@LiguidCool
.Мне почему-то кажется у вас кодировка PHP скрипта неверная. Стандартно UTF8.
Ответ написан
Комментировать
e_svirsky
@e_svirsky
Web Developer
попробуйте установить на хостинге через htaccess параметр:
php_value default_charset UTF-8
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы