Ajax를 통해 UTF-8
으로 데이터를 보내려고하지만 unicode
의 일부 데이터가 변경됩니다. (아약스없이)AJAX : UTF-8을 사용한 게시 방법
간단한 POST
<form accept-charset="UTF-8" method="POST" action="test2.php">
<input type="text" class="" name="text">
<input type="submit" class="button" value="Submit">
</form>
메타와 PHP 헤더가 항상 설정됩니다 :
<meta charset="utf-8">
header("Content-Type: text/html; charset=utf-8");
내가 아랍어 편지를 제출하는 경우 (나는이 개 짧은 예제와 함께 설명 할 것 ب
)이고 strlen()
을 사용하면 3을 반환합니다. mb_strlen()
을 사용하면 1을 반환합니다. 그래야 정상입니다.
이제 Ajax 버전. 양식, 헤더 및 메타는 동일합니다.
... (initiating HttpReq)
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader("charset", "utf-8");
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
...
if (self.xmlHttpReq.readyState == 4) { ... }
이제 동일한 테스트가 strlen()
6 제공하고 또한 mb_strlen()
6의 ب 실제로 어딘가에 아약스 과정에서 6%u0628
로 전환했다 .. 그리고 이런 일이되지 않습니다하지만 onsubmit()는 자바 스크립트에서이 아약스 호출 보통 POST
(예 1)입니다.
Ajax 프로세스에서 내가 잊어 버리고 잘못하고있는 것은 무엇입니까?
스크립트가 제대로 작동하는 것 같습니다. 고마워! FormData가 작동하지 않는 브라우저를 알고 있습니까? 그것을 사용하고 싶지만 대부분의 브라우저 (및 오래된 브라우저)에서도 작동해야합니다. –
예 : 현대적인 브라우저가이 이전 버전을 지원하지 않습니다.이 XHR2 및 FormData는 http://caniuse.com/xhr2이고 여기에 다른 브라우저 용 polyfill forFormData. https://github.com/francois2metz/html5-formdata – cocco
이전 브라우저로 어떻게 처리합니까? –