AJAX 중국어 왜곡 문자를 해결하기 위해 일반적으로 사용되는 두 가지 방법
1. 클라이언트 측에서 EncodeURI(utf-8을 수행할 필요가 없음, 기본값) 및 서버 측에서 iso-8859-1 인코딩을 utf-8 인코딩으로 변환
2. EncodeURI는 클라이언트 측에서 두 번 수행되고 서버 측에서 한 번 변환됩니다.
두 번째 방법으로 문제를 해결할 수 있는 이유는 다음과 같습니다.
두 번의 변환 후 첫 번째 getparameter 메서드에서 첫 번째 디코딩을 수행합니다. 솔루션은 영어이므로(첫 번째 인코딩 후 결과) 두 번째에는 URLDecoder의 디코드 메서드를 사용하면 됩니다. 정상적으로 해결됩니다. 디코딩 방법에서 디코딩 형식을 "utf-8"로 지정해야 한다는 점에 유의하세요. 많은 중국 플랫폼은 utf-8(gb2312인 것 같습니다)을 사용하지 않으므로 디코드의 기본 변환이 반드시 utf-8일 필요는 없습니다.
클라이언트가 서버에서 두 번 인코딩되고 한 번만 디코딩되는 이유는 Tomcat 때문입니다. 프로그래머가 편리하게 프로그래밍할 수 있도록(get과 post는 동일한 코드 사용) Tomcat이 자동으로 post의 인코딩을 디코딩하므로 서버 측에서 손으로 쓴 디코딩 문이 하나 줄어듭니다. 인코딩과 디코딩을 다시 수행해야 하는 이유는 Tomcat의 자동 디코딩 작업이 반드시 우리가 원하는 인코딩대로 디코딩되는 것은 아니지만, 영어 및 기타 문자에 대해 디코딩된 코드는 어떤 플랫폼에 있든 동일하기 때문입니다. Tomcat은 첫 번째 인코딩 결과를 자동으로 해석한 다음 encodeURI 코드를 수동으로 한 번 해석하여 필요한 형식을 얻습니다.
보충: 이제 브라우저의 동작을 다시 관찰했는데, 브라우저에 표시된 중국어가 인코딩된 내용이 아니기 때문에 이것이 Tomcat의 잘못이 아니라고 생각합니다. 현재 이러한 인코딩 문제에 대해 혼란스러워하고 있습니다. 이 분야에 지식이 있는 친구들의 조언을 환영합니다!
IE 캐시 문제 해결
타임스탬프를 추가하고 확인하고 싶으신가요?
프록시 문제 해결
원하시나요? $로 변환
샘플 코드:
다음과 같이 코드 코드를 복사합니다.
함수 확인() {
//중국어 왜곡 문제를 해결하는 방법 1. 페이지 측에서 전송된 데이터는 encodeURI로 인코딩되고 서버 세그먼트는 new String(old.getBytes("iso8859-1"),"UTF-8");
//중국어 왜곡 문제를 해결하기 위한 방법 2, 페이지 측에서 전송된 데이터를 두 번 인코딩하고 서버 세그먼트에서는 URLDecoder.decode(old, "UTF-8")를 사용합니다.
var url = "AJAXServer?name=" + encodeURI(encodeURI($("#userName").val()));
url = 변환URL(url);
$.get(url,null,함수(데이터){
$("#result").html(data);
});
}
//브라우저를 속이고 캐시를 읽지 않도록 URL 주소에 타임스탬프를 추가합니다.
함수 변환URL(url) {
//타임스탬프 가져오기
var timstamp = (new Date()).valueOf();
//타임스탬프 정보를 URL에 연결합니다.
//url = "AJAX서버"
if (url.indexOf("?") >= 0) {
url = url + "&t=" + timstamp;
} 또 다른 {
url = url + "?t=" + timstamp;
}
반환 URL;
}