Я выполняю запрос AJAX скрипту PHP в JavaScript и с помощью библиотеки jQuery.
Вот моя команда, которая выполняет запрос AJAX:jQuery ajax + responseText + Кодировка символов
$.ajax({
async: "false",
cache: "false",
data: {login: strLogin, password: strPassword},
datatype: "text",
error: connexionAjaxError,
success: connexionAjaxSuccess,
type: "POST",
url: "./Connexion"
});
".Connexion" является URL перенаправления на мой PHP скрипт.
connexionAjaxError - это функция JavaScript, которая неизбежно выполняется, как только будет получен ответ HTTP.
Причина: Мой PHP скрипт приводит к текстовому/простой страницы с HTTP код статуса, равный 500.
Здесь самая соответствующая часть моего PHP скрипт:
header("HTTP/1.0 500 Internal Server Error;
Content-type: text/plain;
charset=ISO-8859-1");
echo "été";
Вот подпись connexionAjaxError функция обратного вызова:
function connexionAjaxError(jqXHR, textStatus, errorThrown)
Результаты моего PHP для строки «été».
Внутренняя кодировка PHP - это ISO-8859-1, поэтому строка результата кодируется [e9 74 e9] в шестнадцатеричной нотации.
Но jqXHRR.responseText в функции callexionAjaxError обратного вызова содержит 1-символьную строку.
Я использовал метод charCodeAt объекта JavaScript String, чтобы получить код юникода (UTF-8?) Для символа.
Символ кодируется 65535 в десятичной системе, эквивалентной [ff ff] в шестнадцатеричной системе.
Я не понимаю, почему jqXHR.responseText не содержит 3-символьную строку «été».
Я не эксперт в JavaScript, но я полагаю, что jqXHR.responseText может содержать только строку, закодированную в UTF-8.
Итак, строка «été» в jqXHR.responseText будет закодирована [c3a9 74 c3a9] в шестнадцатеричной нотации.
У меня есть получить код UTF-8 для символа «E» на следующем веб-сайте: http://www.utf8-chartable.de/
Спасибо за ваш ответ. Теперь у меня есть лучшая идея о том, как кодируется строка ls/PHP litteral. Если кодировка ISO-8859-1 применяется к моему скрипту PHP/JS, то строчная строка «été» кодируется [e9] в шестнадцатеричной нотации. Но если кодировка UTF-8 применяется на моем скрипте PHP/JS, то литральная строка «été» кодируется [c3 a9] в шестнадцатеричной системе обозначений. Скажи мне, если я ошибаюсь. – user1139666