当前位置: 代码迷 >> Java Web开发 >> tomcat 接受GBK 参数乱码有关问题
  详细解决方案

tomcat 接受GBK 参数乱码有关问题

热度:263   发布时间:2016-04-16 21:50:37.0
tomcat 接受GBK 参数乱码问题
tomcat server.xml文件里面配置URIEncoding为UTF-8
现在有外部系统以get方式访问  带有GBK编码的中文参数
请问我在程序里面如何能把参数正确的转换会来呢
------解决思路----------------------
对get请求执行encodeURI(param)编码,在提交
encodeURI是javascript函数
------解决思路----------------------
new String("中文".getBytes("utf-8"), "gbk");
------解决思路----------------------
感觉楼上的反了吧,是GBK传到UTF-8 
new String("中文".getBytes("GBK"), "UTF-8");
------解决思路----------------------
你还是直接把错误发上来看看吧
------解决思路----------------------
如果你的外部页面字符集gbk,你的URIEncoding为utf-8,我上面说的肯定是正确的。
你再确定一下字符集,以及中间是否有filter已经做了处理。
------解决思路----------------------
你是否使用框架?
------解决思路----------------------
外部程序get请求是否进行使用gbk进行url encode
------解决思路----------------------
那么他们没有做encode,你传的参数是中文,没有进行url encode,你怎么确定使用的是gbk字符集呢?况且中文字符参数不encode是不符合http协议的,http协议规定,参数只能有ASCII字符的。
------解决思路----------------------
可能是有地方做处理了?你写一个filter,让它最先执行,然后用 new String("中文".getBytes("utf-8"), "gbk");试试,如果还是乱码我就真的无解了。
------解决思路----------------------
已经乱了,变不回来了
引用:
tomcat server.xml文件里面配置URIEncoding为UTF-8
现在有外部系统以get方式访问  带有GBK编码的中文参数
请问我在程序里面如何能把参数正确的转换会来呢

------解决思路----------------------
楼主试试这个:new String(param.getBytes("iso-8859-1"), "utf-8");
------解决思路----------------------
页面也需要设置转码的:
页面:(.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
response.setContentType("text/html;charset=UTF-8");

处理文件:(.java)
转码的三种方法:
A 接受参数时进行编码转换

String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8"); 这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。

B 在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用
String str = request.getParameter("something");即可得到汉字参数。但每页都需要执行这句话。

这个方法也就对post提交的有效果,对于get提交和上传文件时的enctype="multipart/form-data"是无效的。稍后下面单独对这个两个的乱码情况再进行说明。

C 为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp进行编码处理。 

百了一下
  相关解决方案