admin 管理员组

文章数量: 1184232

相信写 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”),”GB2312”);

前天又遇到了一个乱码问题,于是按照以前的经验来进行处理结果怎么搞都不行,无

论怎么转码都不行,情况是这样的:因为用户要求所有的地方都统一为 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

注:尽管乱码问题一般都被解决了,但是一直想弄清乱码产生的根源是什么,以前看到过一片帖子,详细阐述了乱码产生的原因,可惜当时太浮躁,没看完,现在也找不到了,哪位兄弟知道的话不妨告知一下,这才是解决问题的根本,不仅要知其然还要知其所以然, ^_^

本文标签: 这个时候 样的 编程