`
arganzheng
  • 浏览: 101679 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Struts2(JSP)的URL请求中文乱码问题

阅读更多

Struts2(JSP)的URL请求中文乱码问题
2009-6-8 星期一 雨

今天下午刚好广陵同学去面广西IBM,我就在他笔记本上试着解决上次没有解决的URL中文请求乱码问题。直到刚才才解决。不奇怪,因为中国人特有的问题一般是在网上找不到答案的。一搜,遇到同样问题的还真不少,给出解决方法的还不少,但是很多都是重复,贴来贴去的,说的头头是道,照着做就是不行。已经是见惯不怪了。
比如说使用Spring自带的charEncodingFilter不行,自己写了一个Filter也不行。总之试了很多方法,重启了无数次Tomcat,还是不行。
比如这篇: struts2中文乱码解决方法,似乎很有道理,但是照做还是不行。
不过有个很搞笑的现象,就是使用它介绍的最无奈的方法:

public class ConvertCharacter{
        public String Convert(String s){
            String result;
            byte[] temp ;
            try{
                temp = s.getBytes("iso-8859-1");
                result =  new String(temp,"utf-8");
            }
            return result;
        }
   }

发现在非IE内核的浏览器中是有效的,但是在IE内核的浏览器(比如Sogo),当传递的中文参数超过2个字就不行了。比如http://localhost:8080/JmsSyncSender/modifyUser?userId=某人就可以,但是http://localhost:8080/JmsSyncSender/modifyUser?userId=某某人,转换之后就是某某?乱码,也就是说从第三个字开始就是乱码了,太奇怪了,百思不得其解。

还是搜索一下英文吧,还真找的不错的文章。比如下面这篇:http://www.inter-locale.com/codeset1.jsp。不过它似乎跟上面那篇是一样的,只不过解释了为什么这么做的原因。

广陵回来后搜索到一篇文章,地址栏传值,中文乱码:
1.(方法一)
window.location=encodeURI(路径);

2.(方法二)tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码 
需在服务器server.xml中配置对应的端口中配置编码方式即可.例如:

<Connector port="8080" 
              maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
              enableLookups="false" redirectPort="8443" acceptCount="100" 
              debug="0" connectionTimeout="20000" 
              disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-
8"/>

中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了.

使用第二种方法试了一下,将上面的转换类代码去掉,发现两者的效果是一样的。后者是有Tomcat帮我做了转换。这虽然方便了一些,但是还是没有解决IE内核浏览器的问题。

最后,我想是不是因为使用URL传值的问题呢?如果采用Form传值会怎样呢?于是试了一下,使用Hidden field,并使用

<a href="javascript: on_update_click('<s:property value=username />') >更新</a>
 
function on_update_click(username){
   var txtUserId = document.getElementById("userId");
   if(txtUserId!=null){
       txtUserId.value= username;
   }
   document.listUserForm.action = "modifyUser";
   document.listUserForm.submit();
}

这下都可以了,深感欣慰。


分享到:
评论

相关推荐

    STRUTS+AJAX+JSP 请求到后台乱码问题解决方法

    在AJAX请求URL之前 把参数进行encodeURI()转码。 如: 代码如下: var fileName=... 您可能感兴趣的文章:JSP struts2 url传参中文乱码解决办法JSP 开发之Struts2内建自定义拦截器java+jsp+struts2实现发送邮件功

    java web技术开发大全(最全最新)

    4.7.3 实例:解决服务端程序读取中文请求消息的乱码问题 4.7.4 实例:用AJAX技术发送和接收中文信息 4.7.5 实例:在请求消息头和响应消息头中转输中文 4.8 小结 第5章 JSP技术 5.1 用MyEclipse编写第一个...

    java web开发技术大全

    4.7.3 实例:解决服务端程序读取中文请求消息的乱码问题 4.7.4 实例:用AJAX技术发送和接收中文信息 4.7.5 实例:在请求消息头和响应消息头中转输中文 4.8 小结 第5章 JSP技术 5.1 用MyEclipse编写第...

    JspRun!社区论坛系统 v6.0 bulid 090424 GBK 安装版.rar

    24、修复了Wap设置时的页面错误、wap查看回帖时的分页信息、wap发帖回帖乱码的问题 25、修复了新用户注册无法保存个性签名等若干bug 26、修复了三元运算符以兼容更多的web服务器(如jboss、resin等) 27、修复了...

    JspRun!社区论坛系统 v6.0 bulid 090423 GBK 源码版.rar

    24、修复了Wap设置时的页面错误、wap查看回帖时的分页信息、wap发帖回帖乱码的问题 25、修复了新用户注册无法保存个性签名等若干bug 26、修复了三元运算符以兼容更多的web服务器(如jboss、resin等) 27、修复了...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    李兴华Java Web开发实战经典(高清版) Part2

    13.3.10、&lt;c:url&gt;标签 13.3.11、标签 13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签...

    ssh(structs,spring,hibernate)框架中的上传下载

    WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。  本文后面的章节将从数据持久层->业务层->Web层的...

    java web 视频、电子书、源码(李兴华老师出版)

    13.3.10、&lt;c:url&gt;标签 13.3.11、标签 13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    13.3.10、&lt;c:url&gt;标签 13.3.11、标签 13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    13.3.10、&lt;c:url&gt;标签 13.3.11、标签 13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    13.3.10、&lt;c:url&gt;标签 13.3.11、标签 13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    13.3.10、&lt;c:url&gt;标签 13.3.11、标签 13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    13.3.10、&lt;c:url&gt;标签 13.3.11、标签 13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    13.3.10、&lt;c:url&gt;标签 13.3.11、标签 13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1...

Global site tag (gtag.js) - Google Analytics