it-source

.getJ에서 인코딩을 설정하는 방법SON jQuery

criticalcode 2023. 3. 17. 21:42
반응형

.getJ에서 인코딩을 설정하는 방법SON jQuery

jQuery와 .$.getJSON() i 인코딩에 .인코딩에 문제가 있습니다. 는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.charset=ISO-8859-1 이 ,, 드, 음, 음, 음, 음, 이, are, are, are, are, are, are, are, are, are, ,, ,, ,, areUTF-8

에서 $.getJSON 전화요?

「 」를 사용하고 $.getJSON()전에 할 수 .

$.ajaxSetup({
    scriptCharset: "utf-8",
    contentType: "application/json; charset=utf-8"
});

은 '어느 문자집합'이 아니라 ' 문자집합'을 할 수 .utf-8.

여기에서는 옵션에 대해 설명합니다.

contentType :는, 합니다.content-type은 . 입니다.application/x-www-form-urlencoded이치노

scriptCharset :음음 with with with with jsonp ★★★★★★★★★★★★★★★★★」script및 typedata type "GET " 입니다.요청을 특정 문자 집합으로 강제로 해석합니다.원격 컨텐츠와 로컬 컨텐츠 간의 문자 집합 차이에만 필요합니다.

둘 중 하나 또는 둘 다 필요할 수 있습니다.

인코딩을 변경하려면 를 사용해야 할 것 같습니다.contentType파라미터)success ★★★★★★★★★★★★★★★★★」error에서는 콜음음음음음 you you you you you you you you you you가 있다고 합니다.<div id="success"></div> ★★★★★★★★★★★★★★★★★」<div id="error"></div> : 에 in:) :

$.ajax({
    type: "POST",
    url: "SomePage.aspx/GetSomeObjects",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: "{id: '" + someId + "'}",
    success: function(json) {
        $("#success").html("json.length=" + json.length);
        itemAddCallback(json);
    },
    error: function (xhr, textStatus, errorThrown) {
        $("#error").html(xhr.responseText);
    }
});

사실 한 시간 전에 이걸 해야 했는데, 정말 우연이네요!

Wireshark를 사용하여 JSON 콜을 분석해야 합니다.그러면 다음과 같이 JSON 페이지 형성에 charset이 포함되어 있는지 여부를 확인할 수 있습니다.

  • 페이지가 간단한 경우 텍스트/html
0000 48 54 50 2f 31 2e 31 20 32 30 30 4f 4b 0d HTTP/1.1 200 OK.
0010 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 3a 20 74.내용 유형: t0020 65 78 74 2f 68 74 6d 6c 0a 43 61 63 68 2d 확장/확장 ..캐시-0030 43 6f 6e 74 72 6f 6c 3a 20 6e 6d 63 63 68 제어: 캐치 없음
  • 페이지가 MIME "charset = ISO-8859-1"을 사용하는 사용자 지정 JSON을 포함하는 유형인 경우
0000 48 54 50 2f 31 2e 31 20 32 30 30 4f 4b 0d HTTP/1.1 200 OK.
0010 0a 43 61 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20.Cache-C 온트롤:0020 6e 6f 2d 63 63 68 65 0d 43 6f 6e 74 65 6e 캐시 없음..콘텐0030 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 74 6d t-Type: 텍스트/htm0040 6c 3b 20 63 68 61 72 65 74 3d 49 53 4f 2d 38 l; chars et=ISO-80050 38 35 39 2d 31 0d 0a 43 6f 6e 65 63 74 69 6f 859-1..접속

왜 그럴까? JSON 페이지에 다음과 같은 목표를 넣을 수 없기 때문이다.

내 경우 Connect Me 9210 Digi 제조업체를 사용합니다.

  • 비표준 MIME(p-> the CgiPtr-> = fDataType eRpDataTypeOther)를 사용하는 것을 나타내기 위해 플래그를 사용해야 했습니다.
  • 변수 strcpy(p-> the CgiPtr-> fOtherMimeType, "text / html; charset = ISO-8859-1 ")에 새로운 MIME이 추가되었습니다.

JSON에 의해 전달된 데이터를 UTF-8로 변환한 후 페이지에서 변환을 다시 할 필요 없이 작동했습니다.

사용하다encodeURI()클라이언트 JS 및 사용URLDecoder.decode()동작합니다.


예:

  • Javascript:

    $.getJSON(
        url,
        {
            "user": encodeURI(JSON.stringify(user))
        },
        onSuccess
    );
    
  • 자바:

    java.net.URLDecoder.decode(params.user, "UTF-8");

$.getJSON()을 사용하는 경우 콜 전에 다음 항목을 추가할 수 있습니다.

$.ajaxSetup({
    scriptCharset: "utf-8",
    contentType: "application/json; charset=utf-8"
});

utf-8 문자를 다시 얻으려면 이 기능을 사용합니다.

function decode_utf8(s) { 
  return decodeURIComponent(escape(s)); 
}

예: var new_Str=var_utf8(str);

언급URL : https://stackoverflow.com/questions/26620/how-to-set-encoding-in-getjson-jquery

반응형