>웹 프론트엔드 >JS 튜토리얼 >중국어 왜곡된 문자를 제출하는 JQuery AJAX 솔루션_jquery

중국어 왜곡된 문자를 제출하는 JQuery AJAX 솔루션_jquery

WBOY
WBOY원래의
2016-05-16 18:24:00929검색

현상은 다음과 같습니다.

1) Firefox에서는 처리 페이지의 인코딩이 gb2312이므로 데이터 제출에 문제가 없으며 중국어도 올바르게 구문 분석될 수 있습니다.

2) IE8에서는 처리 페이지의 인코딩이 gb2312이며, 제출된 중국어 데이터가 깨져서 나타납니다.

$.post, $.ajax, $.ajaxSubmit(Form 플러그인에서)이든 이전 UTF-8 인코딩 웹사이트에서는 문제가 없었습니다. 데이터를 제출하는 웹페이지의 형식 때문입니다. 어쨌든 브라우저마다 차이가 있으니, HTTP 패키지를 살펴보며 무엇이 문제인지 살펴보자.

Fiddle을 열고 Firefox 및 IE를 사용하여 AJAX를 제출하고(사용자 로그인을 예로 들어) HTTP 헤더를 확인하고

를 찾습니다.

1) 두 브라우저에서 제출한 Form 데이터는 아래 그림과 같이 일관성이 있으며 UTF-8로 인코딩되어 있습니다.


중국어 왜곡된 문자를 제출하는 JQuery AJAX 솔루션_jquery

분석: JQuery의 AJAX 제출은 제출할 데이터를 인코딩하고 encodeURIComponent를 사용하여 js의 데이터를 처리합니다. 따라서 Firefox이든 IE이든 제출된 데이터는 일관되며 UTF-8로 인코딩된 데이터입니다.

2) Header를 확인하여 Entity의 Content-Type에 차이가 있는지 확인하세요

Firefox에서 Content-Type은 문자 집합을 utf-8로 지정합니다.


중국어 왜곡된 문자를 제출하는 JQuery AJAX 솔루션_jquery

IE8에는 문자셋 사양이 없습니다.

중국어 왜곡된 문자를 제출하는 JQuery AJAX 솔루션_jquery

분석: 기본적으로 AJAX 비동기 제출의 문자 인코딩은 웹 페이지 자체와 일치해야 합니다. 즉, 서버는 표시된 문자 세트 사양을 찾지 않고 데이터를 디코딩하기 위해 gb2312를 사용합니다. 이는 IE에서 문자 왜곡의 근본 원인이며, Firefox에서는 브라우저가 AJAX 데이터를 제출할 때 문자 세트의 표시 사양을 추가하여 서버가 UTF-8을 사용하여 디코딩하도록 합니다. 데이터(올바르게 디코딩됨).

추론: 이러한 중국어 왜곡 문제를 해결하려면 지정된 표시 문자 집합을 AJAX에 비동기적으로 제출해야 하는 것 같습니다!

즉시 JQuery의 AJAX 도구 기능 설명을 확인하고 옵션에 콘텐츠 유형을 지정하는 매개변수가 있는지 확인하세요. 내 AJAX 코드에 추가하세요.

코드 복사 코드는 다음과 같습니다.

jQuery(form).ajaxSubmit({
url: "ajax.aspx?a=memberlogin",
type : " post",
dataType: "json",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: showLoginResponse
})

테스트, OK! ! !
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.