如何在.getJSON jQuery中设置编码
在我的web应用程序中,我使用jQuery的如何在.getJSON jQuery中设置编码,jquery,ajax,json,character-encoding,Jquery,Ajax,Json,Character Encoding,在我的web应用程序中,我使用jQuery的$.getJSON()方法提交了一些表单字段。我在编码方面有一些问题。我的应用程序的字符集是charset=ISO-8859-1,但我认为这些字段是随UTF-8提交的 如何设置$.getJSON调用中使用的编码 我认为如果您想更改编码,您可能必须使用,请参阅下面的contentType参数(success和error回调假定html中有和): 事实上,我一个小时前就不得不这么做了,真是巧合 如果要使用$.getJSON()可以在调用之前添加以下内容:
$.getJSON()
方法提交了一些表单字段。我在编码方面有一些问题。我的应用程序的字符集是charset=ISO-8859-1
,但我认为这些字段是随UTF-8
提交的
如何设置
$.getJSON
调用中使用的编码 我认为如果您想更改编码,您可能必须使用,请参阅下面的contentType
参数(success
和error
回调假定html中有
和
):
事实上,我一个小时前就不得不这么做了,真是巧合 如果要使用
$.getJSON()
可以在调用之前添加以下内容:
$.ajaxSetup({
scriptCharset: "utf-8",
contentType: "application/json; charset=utf-8"
});
$.ajaxSetup({
scriptCharset: "utf-8",
contentType: "application/json; charset=utf-8"
});
您可以使用所需的字符集,而不是utf-8
对选项进行了解释
contentType:
向服务器发送数据时,使用此内容类型
。默认值为application/x-www-form-urlencoded
,这在大多数情况下都适用
scriptCharset:
仅适用于具有jsonp
或script
数据类型和GET类型的请求。强制将请求解释为某个字符集。仅用于远程内容和本地内容之间的字符集差异
您可能需要一个或两个…在客户端JS中使用encodeURI()
,在服务器Java端工作中使用urldecker.decode()
例如:
- Javascript:
$.getJSON( url, { "user": encodeURI(JSON.stringify(user)) }, onSuccess );
- Java:
$.getJSON( url, { "user": encodeURI(JSON.stringify(user)) }, onSuccess );
java.net.urldecker.decode(params.user,“UTF-8”)代码>
- 如果页面很简单,如果是text/html
- 如果页面的类型包括带有MIME“charset=ISO-8859-1”的自定义JSON
- 我必须使用一个标志来表示将使用非标准MIME: p->theCgiPtr->=fDataType-eRpDataTypeOther李>
- 它在变量中添加了新的MIME: strcpy(p->theCgiPtr->fothermetype),text/html; 字符集=ISO-8859-1“李>
它对我有效无需将JSON传递的数据转换为UTF-8,然后在页面上重新进行转换…使用此函数重新获得UTF-8字符
function decode_utf8(s) {
return decodeURIComponent(escape(s));
}
例如:
var new_Str=decode_utf8(Str) f如果要使用$.getJSON(),可以在调用之前添加以下内容:
$.ajaxSetup({
scriptCharset: "utf-8",
contentType: "application/json; charset=utf-8"
});
$.ajaxSetup({
scriptCharset: "utf-8",
contentType: "application/json; charset=utf-8"
});
嗨,帕特,我在用getJSON方法设置内容类型时遇到了同样的问题。就在调用getJSON之前,我使用了$.ajaxSetup,但没有发生任何变化,“nordic”字符在我的数据库中变成了垃圾字符。你能告诉我打电话给mathods的确切顺序吗?thnx根据答案,为
application/json
指定字符集是非法的。我在post中遇到了类似的问题,使用了$.ajax(…)调用而不是$.post(…),因为我没有办法更改内容类型。这允许我使用缩写的$.post符号来匹配我正在使用的$.get。我认为这应该是可以接受的答案,因为它可以工作并允许使用$.getJSON()。我刚刚发现您在error方法中重写了XMLHttpRequest主机对象。这只是一个良好的编码实践问题,不要混淆其他开发人员;)我建议将其重命名为其他名称;)更好:)(事实上,我现在通常将其命名为与u相同:>)根据答案,为application/json
指定字符集是非法的。根据答案,为application/json
指定字符集是非法的。非法吗?我希望我不会因为尝试而被捕……对不起,你的答案与@Pat 11年前的答案有何不同?