在包含中文的字符中我们总是很容易碰到汉字转码的问题,针对不同的请求方式我总结了下面几个方法:
-
POST表单提交和正常数据库非英文数字读取:这里通常是在读取数据前进行相关的转码---request.setCharEncoding("UTF-8"),而在输出的时候如果是在JSP页面就可以:,用response.setContentType("text/html;charset=UTF-8")同样适合,
-
get表单提交和超连接中非英文数字:要注意的是,post和get虽然都是对表单而言的,然而他们的提交方式是不同的,get的方式到有点像超连接,是以查询字符串提交的,所以我们在接受页面来进行相关的解码和编码操作,比如我们传过来的乱码字符串是A,我们可以: String B=new String(A.getBytes("ISO-8859-1"),"UTF-8") 的方式来将默认的ISO-8859-1编码方式读成字节数组,然后以UTF-8的编码方式编码,这样我们就可以看到正常的结果了。我们也可以将这样的编码写成一个静态的方法,方便我们调用.在我以前的一个项目中我发现中文写入到COOKIE然后读取容易报错,我当时是先用ISO-8859-1的编码存进的COOKIE,然后取出,编码成UTF-8.是不是这样做我也不是很肯定,当时没有仔细研究这个问题,不过这样写是一定没有问题的.
-
胡乱编码:我以前跟别人找BUG事发现过这样的问题:他JSP页面上是用的GB2312编码,而过滤器里面却是UTF-8 ...汗颜~~页面的编码方式一定要统一,我是很建议大家写到过滤器里面去的.这样会很方便.