9
回答
亲,我又来了。有关JSON编码格式
终于搞明白,存储TCO原来是这样算的>>>   

一个两级级联下拉菜单,

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

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

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

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

举报
minging
发帖于5年前 9回/6K+阅
共有9个答案 最后回答: 5年前

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

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

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

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

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

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

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

如下: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

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

问题暂时解决了:

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

--- 共有 1 条评论 ---
vitou你把 服务器的编码格式设置下为utf-8 试下 5年前 回复

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

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

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

--- 共有 2 条评论 ---
毛冬@dede.g 什么问题? 5年前 回复
dedenj+1 5年前 回复

%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"));

顶部