乱码,又见乱码

    技术2022-05-11  47

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

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

     

    最新回复(0)