struts2中文参数乱码

goodlucktomyself 2012-01-05 05:37:58
编程环境: tomcat6 + struts2.2.3
页面编码: utf-8
struts.i18n.encoding = UTF-8

问题:当我的url带中文参数时【如:http://localhost:8088/web_project/s?param=高级管理】时,如果是超链接点击过去,则后台获取参数是不会乱码,如果我在地址栏回车,则此时后台获取参数时,则出现乱码
以下方法都行不通,例如:
(1)在tomcat中配置中加上URIEncoding="UTF-8"
(2)过滤器

哪位大哥帮忙看下,这种问题如何解决,拜谢!
...全文
338 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodlucktomyself 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 runffer_yang 的回复:]

你要面对gb18030和utf-8不能互转的字符问题。
[/Quote]
确实会存在一些问题,我也看了下一些关于编码的文章,感觉这个编码问题确实不好整,期待更强悍的编码的诞生,可以解决当前所有国家的编码问题!
Steve 2012-01-10
  • 打赏
  • 举报
回复
你要面对gb18030和utf-8不能互转的字符问题。
goodlucktomyself 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zaichongfu 的回复:]

页面jsp中
name = encodeURI(encodeURI(name));
action中解码
String name = URLDecoder.decode(user.getName(), "utf-8");
我就是这么解决的
[/Quote]
这种方法的确可以,但是由于浏览器不同,中文参数解析后的字符串的不一样,假如我按照你说的那样:
页面jsp中
url = encodeURI(encodeURI(url));
然后在后台action中解码
String name = URLDecoder.decode(user.getName(), "utf-8");
但是还会存在问题:假如我把解析后的url拷贝到其它浏览器(比如火狐)再回车,还会是乱码!

最后我是参照百度对中文参数的做法,发现它好像是GB18030编码,然后我也把我的tomcat编码改成GB18030,所有的页面都改成GB18030编码,同时也对url进行编码,action中解码成utf-8,
结果好像可以达到预期效果:将同一url拷贝至不同浏览器中访问,都不会乱码.

不知道这样处理会有问题不???
qq931226110 2012-01-10
  • 打赏
  • 举报
回复
乱码问题:客户端提交中文,servlet中获取的是乱码:
a:如果是get方式,在tomcat中,在conf/server.xml文件中8080端口的connector元素增加URIEncoding="utf-8"
b:如果是post方式,在servlet中,request.setcharactorEncoding("utf-8");放在request.getparameter之前
servlet相应中文,客户端显示乱码:response.setCharactorEncoding("utf-8");该代码要放在
response.getWriter之前
zaichongfu 2012-01-10
  • 打赏
  • 举报
回复
页面jsp中
name = encodeURI(encodeURI(name));
action中解码
String name = URLDecoder.decode(user.getName(), "utf-8");
我就是这么解决的
goodlucktomyself 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 oyxm0 的回复:]
把web。xml代码贴出来看看
[/Quote]
web.xml配置如下:

<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>*.html</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
  • 打赏
  • 举报
回复
不行就先转iso-8859-1,到后台再转回来咯
半个鼠标 2012-01-07
  • 打赏
  • 举报
回复
把web。xml代码贴出来看看
goodlucktomyself 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 runffer_yang 的回复:]

Tomcat在GET时的固有问题,在tomcat配置中加上useBodyEncodingForURI="true",与URIEncoding是同一位置。
记得要重新启动。
[/Quote]
加上了,也还是不起作用,郁闷中....
吴红军 2012-01-05
  • 打赏
  • 举报
回复
楼主,一般我加上过滤器和tomcat加上URIEncoding就可以解决你说的问题,但是不知道你怎么的,就不行了,还有哪里出错了没呢?
Zeus 2012-01-05
  • 打赏
  • 举报
回复
在页面上也用UTF-8的,数据库也用UTF-8
a871737299 2012-01-05
  • 打赏
  • 举报
回复
兄弟,你不会是每天都过来拿分的吧。。。。。
江紫枫 2012-01-05
  • 打赏
  • 举报
回复
看看前台页面中是否设置多个Encoding,只保留一个
ylovep 2012-01-05
  • 打赏
  • 举报
回复
tomcat 编码设置成 URIEncoding="UTF-8"
hsliwei 2012-01-05
  • 打赏
  • 举报
回复
看下JSP编码,是不是统一
绝世酱油瓶 2012-01-05
  • 打赏
  • 举报
回复
在后台将乱码转码、
Steve 2012-01-05
  • 打赏
  • 举报
回复
Tomcat在GET时的固有问题,在tomcat配置中加上useBodyEncodingForURI="true",与URIEncoding是同一位置。
记得要重新启动。
一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 J2EE核心技术 1.4.1 Servlet 1.4.2 JSP(Java服务页面) 1.4.3 EJB(企业JavaBean) 1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path、Classpath和JAVA_HOME 3.2 验证JDK是否安装成功 3.3 建立J2EE的开发环境 3.3.1 下载SDK 3.3.2 安装SDK 3.3.3 设定Path、Classpath和J2EE_HOME 3.4 小结 第四章 Tomcat使用指南 4.1 Tomcat简介 4.1.1 Tomcat的目录结构 4.1.2 Tomcat的配置参数 4.2 建立Tomcat的开发环境 4.2.1 下载Tomcat 4.2.2 设定TOMCAT_HOME 4.3 验证Tomcat是否安装成功 4.4 创建和发布Web应用 4.4.1 创建和发布JSP应用程序 4.4.2 创建和发布Servlet应用程序 4.5 小结 第五章 Eclipse使用指南 5.1 Eclipse简介 5.1.1 Eclipse的历史 5.1.2 Eclipse的运行机制 5.2 建立Eclipse的开发环境 5.2.1 下载Eclipse 5.2.2 配置Eclipse 5.3 整合Eclipse和Tomcat 5.3.1 下载Eclipse的Tomcat插件 5.3.2 为Eclipse配置Tomcat插件 5.4 使用Eclipse建立Web开发项目 5.5 Eclipse的常用快捷键 5.5.1 有关格式化的快捷键 5.5.2 有关调试的快捷键 5.5.3 有关重构的快捷键 5.6 小结 第六章 Log4j使用指南 6.1 Log4j介绍 6.1.1 Log4j历史 6.1.2 Log4j组成 6.2 建立Log4j的开发环境 6.2.1 下载Log4j 6.2.2 配置Log4j 6.3 Log4j的使用方法 6.3.1 配置Log4j 6.3.2 配置根Logger 6.3.3 指定日志输出位置 6.3.4 指定日志输出格式 6.3.5 指定日志输出优先级 6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的工作 7.3.2 配置文件build.xml 7.3.3 编译源代码 7.3.4 创建JAR文件 7.4 小结 第八章 JUnit使用指南 8.1 JUnit介绍 8.1.1 JUnit简介 8.1.2 为什么要使用JUnit 8.2 建立JUnit的开发环境 8.2.1 下载JUnit 8.2.2 配置JUnit 8.3 JUnit的使用方法 8.3.1 继承TestCase 8.3.2 编写测试方法 8.3.3 编写断言 8.4 JUnit的新特性 8.4.1 改变测试方法的命名方式 8.4.2 不再继承TestCase 8.4.3 改变初始化和销毁方式 8.4.4 改变异常处理的方式 8.5 小结 第九章 CVS使用指南 9.1 CVS介绍 9.1.1 CVS简介 9.1

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧