不同浏览器向后台传值乱码,java,struts2,jsp,tomcat

向后台传入参数的时候,乱码,并且不同浏览器的解析也不同,IE:System.out.println(newString(json.getBytes("ISO-8859-1... 向后台传入参数的时候,乱码,并且不同浏览器的解析也不同,IE:
System.out.println(new String(json.getBytes("ISO-8859-1"),"GBK"));
这样可以解决问题,可是到了chrome/firefox
就得:System.out.println(new String(json.getBytes("GBK"),"UTF-8"));
我的tomcat connector设置的URIEncoding是"GBK"
这样可以解决IE乱码,可是解决不了chrome和firefox
如果设置"UTF-8",IE又乱了...chrome和firefox不乱..
jsp页面设置的是GBK,之前设置的"utf-8",2种传到后台都乱...
另外添加了filter也没有效果.....
跪求问题解决办法啊!
展开
 我来答
okrup
推荐于2016-09-30
知道答主
回答量:16
采纳率:0%
帮助的人:10.9万
展开全部

请使用<%@ page pageEncoding="UTF-8" %>页面编码

在<head></head>里加入<meta http-equiv="content-type" content="text/html; charset=utf-8" />

使用POST提交方式

public void doFilter(..) {
    req.setCharacterEncoding("UTF_8");
    resp.setContentType("text/html; charset=UTF-8");
    resp.setCharacterEncoding("UTF_8");
}

要保证过滤器处理编码逻辑在request获取第一个提参数之前(过滤器在最前面)


GET提交方式

请使用Javascript先encodeURI(encodeURI(url))处理一下在提交,后端java.net.URLDecoder获取


另外没事干不要修改Tomcat, URIEncoding


还有不要到处写new String(json.getBytes("ISO-8859-1"),"GBK"),看见这个就蛋疼

埃及来的法老
2014-01-07 · 超过26用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:71.1万
展开全部
如果只有这两种情况暂时又找不到原因,简单的可以做下判断浏览器类型,然后分别转码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fylsh
2014-01-07 · TA获得超过950个赞
知道小有建树答主
回答量:1472
采纳率:0%
帮助的人:1038万
展开全部
保证提交的json数据编码和tomcat的URIEncoding编码一致。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨落满枝头
2014-01-07 · 超过10用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:19万
展开全部
是不是你的浏览器默认编码被你改了..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式