struts2中jsp到action的乱码问题

insect 2010-03-29 05:21:15
S2SH整合的框架为什么jsp想action发送的中文内容都是乱码呀!jsp中的encoding=“utf-8”在struts.xml中有<constant name="struts.i18n.encoding" value="utf-8"/>
哪位大侠帮帮忙!!!
...全文
581 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
在struts配置文件中配置个过滤器就行
ruihaitang 2012-11-05
  • 打赏
  • 举报
回复
用spring的编码过滤器 或自己写个过滤器
taiguoerxi 2012-11-05
  • 打赏
  • 举报
回复
引用 13 楼 izard999 的回复:
Struts2的默认编码就是UTF-8,所以在Action里面不用设置它.! 使不使用过滤器都一样,因为最后到了StrutsPrepareAndExecuteFilter全给你整成UTF-8了,除非你在配置文件中设置 LZ的问题我是深深体会过, 为什么乱呢.?下面我来解释: 如果你用POST方式提交,只要页面编码是UTF-8,是绝对不会乱的, 因为信息是从请求体过去……
谢谢 解决了
a469897760 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

Struts2的默认编码就是UTF-8,所以在Action里面不用设置它.! 使不使用过滤器都一样,因为最后到了StrutsPrepareAndExecuteFilter全给你整成UTF-8了,除非你在配置文件中设置
LZ的问题我是深深体会过, 为什么乱呢.?下面我来解释:
如果你用POST方式提交,只要页面编码是UTF-8,是绝对不会乱的, 因为信息是从请求体过去的!
如果是get,如……
[/Quote]解决了,谢谢,顶起。
「已注销」 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

Struts2的默认编码就是UTF-8,所以在Action里面不用设置它.! 使不使用过滤器都一样,因为最后到了StrutsPrepareAndExecuteFilter全给你整成UTF-8了,除非你在配置文件中设置
LZ的问题我是深深体会过, 为什么乱呢.?下面我来解释:
如果你用POST方式提交,只要页面编码是UTF-8,是绝对不会乱的, 因为信息是从请求体过去的!
如果是get,如……
[/Quote]
除了说以gbk编码,其他都正确,实际上是以iso-8859-1编码,因此可以使用new String("".getBytes("iso-8859-1"), "utf-8")得到正确字符.
属性URIEncoding="UTF-8"实际上是覆盖tomcat中connector类中的默认编码iso-8859-1。可参考connector查看详细信息
hepeng_8 2011-06-20
  • 打赏
  • 举报
回复
提交方式默认貌似是get的
lcjman_34 2011-06-19
  • 打赏
  • 举报
回复
在action中直接使用request.getParameter()时;还是出现乱码。原因分析如下:

1、getParameter()是有带字符参数的。例:

String s = (String)request.getParameter("txt").getBytes("iso-8859-1");

2、String也可以带有字符参数。

String(byte[] bytes, String charsetName)
构造一个新的 String,方法是使用指定的字符集解码指定的字节数组。

例:String s = new String("中文","utf-8");
Spring源码解析 2011-06-18
  • 打赏
  • 举报
回复
都改成UTF-8
,如果还不行,加个过滤器吧,把字符都过滤成utf-8.
乱码问题,程序员永远的痛--------------
a243138945 2011-06-18
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 izard999 的回复:]

Struts2的默认编码就是UTF-8,所以在Action里面不用设置它.! 使不使用过滤器都一样,因为最后到了StrutsPrepareAndExecuteFilter全给你整成UTF-8了,除非你在配置文件中设置
LZ的问题我是深深体会过, 为什么乱呢.?下面我来解释:
如果你用POST方式提交,只要页面编码是UTF-8,是绝对不会乱的, 因为信息是从请求体过去的!
如果是get,如……
[/Quote]

正解 我刚刚遇到了这个问题 试了一下 果然是 顶起
yuanyue0540 2011-06-18
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 izard999 的回复:]
Struts2的默认编码就是UTF-8,所以在Action里面不用设置它.! 使不使用过滤器都一样,因为最后到了StrutsPrepareAndExecuteFilter全给你整成UTF-8了,除非你在配置文件中设置
LZ的问题我是深深体会过, 为什么乱呢.?下面我来解释:
如果你用POST方式提交,只要页面编码是UTF-8,是绝对不会乱的, 因为信息是从请求体过去的!
如果是get,如果……
[/Quote]


支持~
v-AUGUST-v 2011-06-18
  • 打赏
  • 举报
回复
2.1.6版本的是bug···如果不方便更改Struts2的版本的话,哈有个办法,更改web.xml文件中的
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter修改成org.apache.struts2.dispatcher.FilterDispatcher
因为后者是Struts2 早期版本中的配置,会避免2.1.6中的bug的问题
IT淡淡 2011-06-18
  • 打赏
  • 举报
回复
1:把的页面的编码统一
2:检查你的提交方式 最好用Post 用get提交 拦截器是无法解析url上面的乱码的
这些检查完以后 基本上应该没问题了
zhengyongqianluck 2011-06-18
  • 打赏
  • 举报
回复
在xml.web中配置过滤器,编码设置为utf-8,若还不行就对字符串进行编码转换。
海风吹 2011-04-22
  • 打赏
  • 举报
回复
建议再请求也面前加一个过滤器!
linmarklin 2011-04-21
  • 打赏
  • 举报
回复
对编码格式没有确认吧
这个很恶心
实在不行,建议直接转成unicode
yangfan_jxufe 2011-04-21
  • 打赏
  • 举报
回复
太感谢10楼的哥们了,我也碰到了同样的问题,以前用的2.1.6,换了struts-core-2.1.8.jar包后就没有乱码问题了
hedong_cool 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 kuailexiaobuding4 的回复:]
先全部把所有的改成utf-8
1、有可能是struts2内部机制获取参数乱码在struts.xml中配置
<constant name="struts.i18n.encoding" value="UTF-8"/>
直接写个filter继承StrutsPrepareAndExecuteFilter然后在web.xml配置这个filter
public class StrutsFilter e……
[/Quote]
感谢了,这个问题差点把我整死了。
ri6876099 2010-12-23
  • 打赏
  • 举报
回复
在web.xml里面添中上这个配置就可以了

<!-- spring 编码过滤 开始 -->
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<!-- spring 编码过滤 结束 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
redlotus_lyn 2010-05-18
  • 打赏
  • 举报
回复
你用的是struts2的哪个版本。

如果是struts2.1.6的话,是Bug,建议使用struts2.1.8.1
zh346400987 2010-05-18
  • 打赏
  • 举报
回复
这个问题我前不久也遇到过,所以就给你回了。
我也试了网上的所有方法,就是不行,也全部用utf-8的编码方式。
后来找了很久,终于找到原因了,因为我以前做过,没出现过乱码。
原来是包的问题,以前我下的是struts-2.1.8.1的版本,而我这次是直接用myelcipse直接加入的,是2.0的版本,所以就出现乱码了,而导入2.1.8的版本之后这问题就解决了。
还有就是你得到的String用
new String(str.getBytes("ISO8859_1"), "UTF8"),进行转码这种方法也能解决。
加载更多回复(17)

67,513

社区成员

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

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