相信写JSP的人都遇到过乱码的问题,似乎JSP乱码是一个非常经典的问题。以前遇到乱码的时候,基本都可以搞定,当时遇到的乱码无非以下两种:
1.页面上的汉字乱码
这个我碰到的比较少,多半是因为没有加上
<%@ page contentType="text/html;charset=gb2312" %>,或者是说这句代码制定的字符集与<meta http-equiv="Content-Type" content="text/html; charset=gb2312">中指定的不一致,这个应该比较好搞定。
2.从表单读取数据乱码
这个我就基本上经常碰到了,通常是这样的name=request.getParameter(“name”),在页
面上打印出来的时候就乱码了,这个时候通常只要重新转码就可以搞定了,如下面的代码所示:name=new String(name.getBytes(“ISO-8859 -1” ),”GB 2312” );
前天又遇到了一个乱码问题,于是按照以前的经验来进行处理结果怎么搞都不行,无
论怎么转码都不行,情况是这样的:因为用户要求所有的地方都统一为UTF-8编码,于是用了如下的指令,<%@ page contentType="text/html;charset=utf-8" %>和<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,
从表单中用request.getParameter得到参数的时候出现了乱码,此时加上这句request.setCharacterEncoding("utf-8");基本就没乱码了。但是,如果我通过url来传递中文参数的话就行不通了,这个时候无论我怎么转码,或者说修改tomcat的配置文件都不行了。我的代码是类似这样的:
var name="<%= c_name %>";
window.location = url+"? name="+name+"&unit="+unit
其中c_name是中文。我上网试了很多方法都不行,最后经过如下的处理就可以了:
var name="<%= java.net.URLEncoder.encode(c_name,"utf-8") %>";
window.location = url+"? name="+name+"&unit="+unit。
注:尽管乱码问题一般都被解决了,但是一直想弄清乱码产生的根源是什么,以前看到过一片帖子,详细阐述了乱码产生的原因,可惜当时太浮躁,没看完,现在也找不到了,哪位兄弟知道的话不妨告知一下,这才是解决问题的根本,不仅要知其然还要知其所以然,^_^。