.getJSON jQuery에서 인코딩을 설정하는 방법
-
09-06-2019 - |
문제
웹 앱에서 jQuery의 $.getJSON()
메서드를 사용하여 일부 양식 필드를 제출합니다.인코딩에 문제가 있습니다.내 앱의 문자 집합은 charset=ISO-8859-1
이지만이 필드는 UTF-8
로 제출 된 것 같습니다.
$.getJSON
호출에 사용되는 인코딩은 어떻게 설정하나요?
해결책
원하는 경우 $.ajax()
를 사용해야 할 것 같습니다.인코딩을 변경하려면 아래의 contentType
매개 변수를 참조하십시오 (success
및 error
콜백은 html에 <div id="success"></div>
및 <div id="error"></div>
가 있다고 가정합니다).
라코 디스
실제로이 작업을 한 시간 전에해야 했어요. 우연 이네요!
다른 팁
$.getJSON()
를 사용하려면 통화 전에 다음을 추가 할 수 있습니다.
라코 디스
utf-8
대신 원하는 문자 집합을 사용할 수 있습니다.
옵션은 여기 에 설명되어 있습니다.
contentType :
서버로 데이터를 보낼 때이 content-type
를 사용하십시오.기본값은 application/x-www-form-urlencoded
이며 대부분의 경우에 적합합니다.
scriptCharset :
jsonp
또는 script
dataType 및 GET 유형이있는 요청에만 해당됩니다.요청이 특정 문자 세트로 해석되도록합니다.원격 콘텐츠와 로컬 콘텐츠 간의 문자 집합 차이에만 필요합니다.
하나 또는 둘 다 필요할 수 있습니다 ...
Wireshark를 사용하여 JSON 호출을 분석해야하므로 JSON 페이지 형성에 문자 세트를 포함하는지 여부를 확인할 수 있습니다. 예를 들면 다음과 같습니다.
- 텍스트 / html 인 경우 페이지가 단순한 경우
라코 디스
- 페이지가 MIME가 "charset= ISO-8859-1"인 사용자 정의 JSON을 포함하는 유형 인 경우
라코 디스
왜 그렇습니까?JSON 페이지에 다음과 같은 목표를 넣을 수 없기 때문입니다.
제 경우에는 제조업체 Connect Me 9210 Digi를 사용합니다.
- 비표준 MIME을 사용할 것임을 나타내는 플래그를 사용해야했습니다. p-> theCgiPtr->= fDataType eRpDataTypeOther;
- 변수에 새 MIME를 추가했습니다.
strcpy (p-> theCgiPtr-> fOtherMimeType, "text / html;
charset= ISO-8859-1 ");
나에게 효과적입니다 . JSON에서 전달한 데이터를 UTF-8로 변환 한 다음 페이지에서 다시 변환하지 않아도됩니다.
- 페이지가 MIME가 "charset= ISO-8859-1"인 사용자 정의 JSON을 포함하는 유형 인 경우
라코 디스
클라이언트 JS에서 encodeURI()
를 사용하고 서버 Java 측 작업에서 URLDecoder.decode()
를 사용하세요.
<시간>
예 :
-
자바 스크립트 :
$.getJSON( url, { "user": encodeURI(JSON.stringify(user)) }, onSuccess );
-
자바 :
java.net.URLDecoder.decode(params.user, "UTF-8");
이 기능을 사용하여 utf-8 문자를 되 찾으세요 라코 디스
예 : 라코 디스