JSP乱码解决方案 WebWork乱码解决方案

看了很多关于JSP乱码的解决办法

像这样?:
<%@ page pageEncoding="GB2312" contentType="text/html;charset=GB2312"%>

<%request.setCharacterEncoding("GB2312");%>
大概就基本上可以解决中文的显示问题了,但仅仅是输出而已(如果不想在每个页面上搞这么麻烦,也可以用一个filter来完成同样的工作)。。

但是更麻烦的乱码发生在url里。。浏览器默认对url进行ISO-8859-1编码。所以GET表单数据自然以ISO-8859-1传往JVM了。。JVM然后以Unicode进行解码,显示出来的内容当然不对。。对应的解决办法:
System.out.println("ISO-8859-1" + new String(testString.getBytes("ISO-8859-1"),"gb2312"));
   System.out.println("UTF-8" + new String(testString.getBytes("UTF-8"),"gb2312"));
   System.out.println("GB2312" + new String(testString.getBytes("GB2312"),"gb2312"));
   System.out.println("GBK" + new String(testString.getBytes("GBK"),"gb2312")); 
看一下,哪一条语句输出了正确的结果,你就会明白我刚刚讲的是什么意思了。

如果,没有哪一条输出了正确结果,对不起!请仔细检查其它的地方。
如果,你走运的话。第一条语句可以输出正确的结果,那么,你在你的.java文件中就可以用这种方法进行转换了。
以上是JSP中对传入参数乱码的一点心得。。基本上可以解决JSP乱码问题。

下面来看一看WebWork:如果你使用的是WebWork的UI Tag,那么中文问题就不是什么问题了:使webwork.properties包含:
webwork.locale = zh_CN
webwork.i18n.encoding = GB2312
这就是解决之道。

接着看一下我今天遇到的错误:
由于我觉得webwork的标签不是很灵活。。准备使用原始HTML标签。这个时候,乱码发生了。
乱搞了一通JSP乱码的问题。明白了:需要编码转换。但是,params这个interceptor是webwork定义的,用来参数绑定的。。。如否在 params拦截器执行之后再进行转换?不能。因为每一个页面传回的参数个数及domain都不一样,如果转换,那么每一个action 就都需要转换了,显然这是不合理的。。。完全废除了params的强大功能。。。。正在发愁的时候,突然找到一条解决这道:<form action="" method="post">
就是这个POST,它就可以搞定一切。。

哎,乱码终于归于平静了!

<转载请注明出自http://hi.baidu.com/jenk>

你可能感兴趣的:(jvm,jsp,UI,浏览器,Webwork)