亲,我又来了。有关JSON编码格式

minging 发布于 2012/04/26 19:10
阅读 6K+
收藏 1

一个两级级联下拉菜单,

第一级随网页发送,第二级更具第一级的选择采用Ajax技术以JSON格式发送。

网页显示正常,但是第二级选择的结果发回给服务器的时候出现了乱码(中文)

服务器采用的是java,设置编码(包括数据库)为UTF-8。

请问现在我该怎样修改JSON的编码格式为UTF-8?

加载中
0
Andre.Z
Andre.Z

传递参数用中文?
encodeURIComponent
js里面用这个,将中文参数值转成UTF-8的,你服务端既然已经是UTF-8的,直接获取就可以了。

0
Z
ZYud

utf16才能保证任何情况下不乱码

{'a':"\u000a"}

roockee
roockee
这得这个方法好
jeffsui
jeffsui
恩,同意,这个肯定不乱码!
0
minging
minging

昨天测试了一晚,可以确定:

从数据库中读取的数据(City)在服务器中显示正确,

数据通过JSON发送到客户端(网页)

网页显示正确,但escape()以后出现乱码

最后返回服务器的也是乱码

初步怀疑,服务器发出数据时JSON编码有问题,该如何改?望各位不吝赐教。

0
JustForFly
JustForFly

提示:可以使用 unescape() 对 escape() 编码的字符串进行解码。

注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。

摘自http://www.w3school.com.cn/js/jsref_escape.asp

minging
minging
可不可以具体一点?我试了一下还是不行
0
minging
minging

如下:portCity为何会这样?

http://minging-pc:8080/Air/Manager/Airport/AddAirport?provincial=9&airport.PortCity=%E5%90%89%E6%9E%97%E5%B8%82&airport.PortName=dfdf&airport.PortAddress=dfsdf&airport.PortPhone=sdfdf

Andre.Z
Andre.Z
PortCity正常。
JustForFly
JustForFly
没看到你的具体程序,无法很好帮你解答。 我可以给你提点建议。如果你要往后台传值,本身是不建议用url后面跟值的方式发送请求(也就是GET);建议使用POST方式,你可以使用页面隐藏<input type="hidden">方式来传入。这样也可以避免URL中文的转码问题。
0
minging
minging

问题暂时解决了:

把method改为post后就可以了,可能get会对参数进行编码,但是送到服务器我又不知道怎样解码。而用post就不会对参数编码,到服务器自然就不需要解码了。谢谢你们,亲~~~~~

vitou
vitou
你把 服务器的编码格式设置下为utf-8 试下
0
毛冬
毛冬

因为一般的框架例如struts , springMVC 之类的对get 和 post传递的参数进行了不同的处理方式。

一般在后台action 取参数时对get的参数进行转码,以UTF8编码获取就可以了。

或者在容器设置get参数的编码。 TOMCAT就是在<Connector   加上URIEncoding="utf-8" 就可以了

毛冬
毛冬
@dede.g 什么问题?
dedenj
dedenj
+1
0
Andre.Z
Andre.Z

%E5%90%89%E6%9E%97%E5%B8%82就是UTF-8的“吉林市”,如果服务器端设置了UTF-8编码,直接获取就有了,不用解码
如果不行的话

System.out.println(java.net.URLDecoder.decode("%E5%90%89%E6%9E%97%E5%B8%82", "UTF-8"));

0
h
hts198
在服务器端, new String(变量.getBytes("ISO-8859-1"),"UTF-8");
返回顶部
顶部