PHP 스크립트로 POST 형식을 통해 JSON으로 데이터를 보내는 자바 스크립트가 있습니다.PHP에서 AJAX POST 호출을 통해 문자열을 디코딩하는 중에 예기치 않은 동작이 발생했습니다.
모든 것이 "평범한"문자로 잘 작동하지만 예를 들어 "à"과 같은 악센트가있는 모음을 사용하면 불일치가 발생합니다. 누군가에게이 문제를 해결하는 방법에 대한 제안이 있는지 물어보고 싶습니다.
이
은 자바 스크립트입니다 : 사물의 PHP 측면에서$.ajax({
contentType: 'application/json',
data: JSON.stringify({
"action": params.action,
"username": params.username,
"page": params.page,
}),
processData: false,
//dataType: 'json',
url: "/w/ImolaCustom/SudoAutoedit.php",
type: 'POST',
success: function(data) {
...
}
});
내가 할이 :
$theData = json_decode(file_get_contents('php://input')), true);
내가 좋아하는 뭔가를 보낼 경우 문제 자체를 제시한다
params.page = "Società sportiva Bridge";
$ theData [ 'page']는 "Societ \ xc3 \ xa0 sportiva Bridge"가됩니다.
utf8_decode ($ theData [ 'page'])를 사용하는 경우 (또는 json_decoding 전에 php : // 입력에서 전달 된 문자열에 사용하면 "Societ \ xe0 sportiva Bridge"가 대신 사용됩니다.
iconv(), mb_convert_variables() 및 mb_convert_encoding()과 같은 다른 변환 함수를 사용하여 UTF-8을 ISO-8859-1로 변환 한 후 위와 같은 결과를 얻으려고했습니다.
encodeURIComponent() 또는 escape()를 사용하여 문자열 client-side 인코딩도 시도했습니다. PHP는 올바른 문자열 (각각 "Societ % C3 % A0 % 20sportiva % 20Bridge"및 "Societ % E0 % 20sportiva % 20Bridge")을 수신하지만, rawurldecode()로 해독 한 후에도 "Societ \ xc3 \ xa0 sportiva Bridge" 및 "Societ \ xe0 sportiva Bridge"와 같습니다.
두 파일 모두 CentOS 시스템에 있으며 UNIX 모드에서는 EOL 변환과 UTF-8 (편집기는 notepad ++)으로 설정된 Charset Encoding으로 저장됩니다.
'contentType :'application/json을 시도하십시오. charset = utf-8''! UTF-8은 모든 악센트를 처리해야합니다. –
@IsmailRBOUH 그냥 여전히 – Night861
당신이 전화해도 동일한 결과를 얻고, 변화를 시도하지'을 console.log (JSON.stringify ({ "조치"params.action, "사용자 이름"params.username, "페이지" : params.page, }))'백엔드 또는 프론트 엔드에 문제가 있는지 확인 하시겠습니까? – RaV