JQuery AJAX가 UTF-8을 내 서버로 보내지 않고 IE에서만 전송합니다.
UTF-8, 일본어 텍스트를 서버로 보냅니다.파이어폭스에서 작동합니다.내 access.log 및 헤더는 다음과 같습니다.
/ajax/?q=%E6%BC%A2%E5%AD%97
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Content-Type application/x-www-form-urlencoded; charset=UTF-8
그러나 IE8에서 my access.log는 다음과 같이 말합니다.
/ajax/?q=??
어떤 이유에서인지 IE8이 제 AJAX 호출을 물음표로 바꾸고 있습니다.왜요? 스크립트 Charset과 Content를 추가했습니다.일부 자습서에 따라 입력하지만 여전히 검색되지 않습니다.
이건 내 코드야
$.ajax({
method:"get",
url:"/ajax/",
scriptCharset: "utf-8" ,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
data:"q="+query ...,
...
})
다음을 사용하여 쿼리 매개 변수 인코딩 시도encodeURIComponent()
data:"q="+encodeURIComponent( query )
bobince가 그의 코멘트에서 매우 정확하게 언급했듯이, 만약 당신이 Ajax 메소드에 매개 변수를 전달하기 위해 객체 표기법을 사용한다면 그것은 인코딩 자체를 처리할 것입니다.
그렇게
data:{ q : query }
jQuery가 인코딩을 처리하도록 합니다.
저는 제가 마주친 문제와 utf8 변환과 관련된 문제가 해결되기를 바라며 이 게시물을 읽었습니다.
제 경우 서버 엔진(node.js)이 utf8이 아닌 원시 데이터로 간주되는 데이터의 Content-length를 계산하는 것으로 밝혀졌습니다. 따라서 uft8의 두 개의 문자 확장 문자가 서버에서 한 개의 문자를 너무 적게 보내는 것처럼 계산되었습니다.
여기서 해결하기 위해 내가 한 일을 확인하십시오. CouchDB로 보낼 때 Json이 제대로 형성되지 않았습니다.
오래된 게시물인 건 알지만 최근에 이런 문제가 생겨서 다른 사람이 같은 문제가 생길 경우를 대비해 기여하고 싶습니다.저는 PHP를 사용하고 있지만 모든 서버 사이드 언어에 옵션이 있다고 확신합니다.그것은 단지 몇 가지 일이었습니다.
헤더('Content-Type: text/sublish; charset=utf-8')를 추가하여 Ajax 응답에 올바른 헤더를 보내고 있는지 확인합니다.이것이 당신의 첫 번째 대사임에 틀림없습니다.헤더가 이미 전송되었다고 말하는 오류가 있다면 코드의 어딘가에서 헤더를 전송하기 전에 여분의 공간이나 다른 것을 출력하기 때문입니다. 코드를 확인하십시오.
서버에서 응답을 작성할 때 에코 html 엔티티($your-string, null, 'utf-8)를 사용하여 모든 char를 해당 HTML char로 변환해야 합니다; 왜냐하면 당신이 utf-8 데이터를 보낸다고 IE에 말한 후에도,IE는 그것을 잊거나 단순히 아무것도 가정하지 않기 때문에 코드에 이것을 추가하면 올바른 출력을 보장할 수 있습니다.
당신의 도움에 모두 감사합니다.
사용하다encodeURIComponent()
샘플입니다.다음은 샘플입니다.
function doPost()
{
var URL = "http://localhost/check.php?yab=" + encodeURIComponent(document.getElementById("formSearch").childNodes[1].value);
xmlHttp.open("GET", URL);
xmlHttp.send();
};
언급URL : https://stackoverflow.com/questions/2473316/jquery-ajax-is-not-sending-utf-8-to-my-server-only-in-ie
'programing' 카테고리의 다른 글
왜 MariaDB가 내 Bitnami LAMP 인스턴스의 기본 데이터베이스이며 MySQL로 전환하는 방법은 무엇입니까? (0) | 2023.07.26 |
---|---|
현재 날짜에 하루를 추가하려면 어떻게 해야 합니까? (0) | 2023.07.26 |
SpringBOOT에서 JVM 인수를 전달하는 방법 (0) | 2023.07.26 |
sql 쿼리 - 대소문자 구분 함수를 사용합니다. (0) | 2023.07.26 |
'mat-form-field'는 알려진 요소가 아닙니다. - Angular 5 & Material 2 (0) | 2023.07.26 |