JavaScript에서 PHP 스크립트에 대한 AJAX 요청을 수행하고 jQuery 라이브러리를 사용합니다.jQuery ajax + responseText + 문자 인코딩
$.ajax({
async: "false",
cache: "false",
data: {login: strLogin, password: strPassword},
datatype: "text",
error: connexionAjaxError,
success: connexionAjaxSuccess,
type: "POST",
url: "./Connexion"
});
는 ".Connexion는"내 PHP 스크립트에 URL 리디렉션입니다 :
다음은 AJAX 요청을 수행 내 명령입니다.
connexionAjaxError는 HTTP 응답을 받자 마자 필연적으로 실행되는 JavaScript 함수입니다.
이유는 : 내 PHP 스크립트는 여기에 500
내 PHP 스크립트의 관련성이 가장 높은 부분과 동일한 HTTP 상태 코드와 텍스트/일반 페이지로 결과 : 여기
header("HTTP/1.0 500 Internal Server Error;
Content-type: text/plain;
charset=ISO-8859-1");
echo "été";
하면 connexionAjaxError의 서명입니다 콜백 함수 :
function connexionAjaxError(jqXHR, textStatus, errorThrown)
"été"문자열에 대한 PHP 결과.
내 PHP 내부 인코딩은 ISO-8859-1이므로 결과 문자열은 [e9 74 e9]로 16 진수로 인코딩됩니다.
하지만 connexionAjaxError 콜백 함수의 jqXHR.responseText에는 1 자 문자열이 포함되어 있습니다.
JavaScript String 객체의 charCodeAt 메서드를 사용하여 문자의 유니 코드 (UTF-8?) 코드를 가져 왔습니다.
문자는 16 진법의 [ff ff]에 해당하는 10 진수 표기법으로 65535로 인코딩됩니다.
jqXHR.responseText에 "été"라는 3 자의 문자열이없는 이유를 모르겠습니다.
JavaScript의 전문가는 아니지만 jqXHR.responseText에는 UTF-8로 인코딩 된 문자열 만 포함될 수 있다고 가정합니다.
jqXHR.responseText의 "été"문자열은 [c3a9 74 c3a9]로 16 진수로 인코딩됩니다.
내가 다음 웹 사이트에서 문자 "E"에 대한 UTF-8 코드 검색이 : http://www.utf8-chartable.de/
답변 해 주셔서 감사합니다. 이제 JS/PHP litteral 문자열을 인코딩하는 방법에 대한 더 나은 아이디어를 얻었습니다. 내 PHP/JS 스크립트에 ISO-8859-1 인코딩이 적용되면 litteral 문자열 "été"는 16 진수로 인코딩됩니다 [e9]. 그러나 UTF-8 인코딩이 PHP/JS 스크립트에 적용되면 litteral 문자열 "été"는 16 진수 표기법으로 인코딩됩니다 [c3 a9]. 내가 틀렸다고 말해줘. – user1139666