当前位置:  开发笔记 > 前端 > 正文

如何在.getJSON JQuery中设置编码

如何解决《如何在.getJSONJQuery中设置编码》经验,为你挑选了3个好方法。

在我的网络应用程序中,我使用jQuery的$.getJSON()方法提交了一些表单字段.我在编码方面遇到了一些问题.我的应用程序的字符集是charset=ISO-8859-1,但我认为这些字段是提交的UTF-8.

如何设置$.getJSON调用中使用的编码?



1> Pat..:

如果您想使用$.getJSON(),可以在通话前添加以下内容:

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

你可以使用你想要的字符集代替utf-8.

这里解释了选项.

contentType :将数据发送到服务器时,请使用此选项content-type.默认是application/x-www-form-urlencoded,对大多数情况来说都没问题.

scriptCharset :仅适用于具有jsonpscriptdataType和GET类型的请求.强制请求被解释为某个字符集.只需要远程和本地内容之间的字符集差异.

你可能需要一个或两个......


在Pat,我遇到了使用getJSON方法设置内容类型的相同问题.我在调用getJSON之前使用了$ .ajaxSetup,但是没有发生变化,"nordic"字符变成了我的DB中的垃圾字符.你能告诉我调用mathods的确切顺序吗?日Thnx
根据[this](http://stackoverflow.com/a/13098683/95735)的回答,为`application / json`指定字符集是非法的。

2> travis..:

我认为$.ajax()如果你想改变编码你可能不得不使用,请参阅contentType下面的参数(successerror回调假设你有

在html中):

$.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);
    }
});

我实际上只需要在一个小时前做到这一点,真是巧合!



3> 小智..:

您需要使用Wireshark分析JSON调用,因此您将看到是否在JSON页面的构成中包含了字符集,例如:

如果页面很简单,如果是text / html

0000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d HTTP / 1.1 200确定。
0010 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74。内容-类型:t
0020 65 78 74 2f 68 74 6d 6c 0d 0a 43 61 63 68 65 2d ext / html ..Cache-
0030 43 6f 6e 74 72 6f 6c 3a 20 6e 6f 2d 63 61 63 68控制:无缓冲

如果页面的类型包括带有MIME“ charset = ISO-8859-1”的自定义JSON

0000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d HTTP / 1.1 200确定。
0010 0a 43 61 63 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20 .Cache-C控制: 
0020 6e 6f 2d 63 61 63 68 65 0d 0a 43 6f 6e 74 65 6e无缓存..内容
0030 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 74 6d t-类型:文本/ htm
0040 6c 3b 20 63 68 61 72 73 65 74 3d 49 53 4f 2d 38 l; 字符et = ISO-8
0050 38 35 39 2d 31 0d 0a 43 6f 6e 6e 65 63 74 69 6f 859-1..C

这是为什么?因为我们不能将这样的目标放在JSON页面上:

就我而言,我使用制造商Connect Me 9210 Digi:

我必须使用一个标志来指示将使用非标准MIME:p-> theCgiPtr-> = fDataType eRpDataTypeOther;

它将新的MIME添加到变量中:strcpy(p-> theCgiPtr-> fOtherMimeType,“ text / html; charset = ISO-8859-1”);

它对我有用,而不必转换JSON传递的UTF-8数据,然后在页面上重做转换...

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有