乱码,又见乱码

来源:互联网 发布:wemall 源码 编辑:程序博客网 时间:2024/05/01 21:12

相信写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

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

 
原创粉丝点击