S2SH整合的框架为什么jsp想action发送的中文内容都是乱码呀!jsp中的encoding=“utf-8”在struts.xml中有<constant name="struts.i18n.encoding" value="utf-8"/>
哪位大侠帮帮忙!!!
哪位大侠帮帮忙!!!
解决方案 »
- 解释代码,return list(mapping, form, request, response);是返回什么?list吗?还是没有返回?
- java gmail email发送不成功
- Servlet3.0的新特性
- spring jboss 使用定时发送邮件
- 关于Tomcat/JBoss的配置问题,急,请大家帮忙
- SQL-Server2000 + Weblogic Server8.1的问题,请各位高手指点,十万火急!在此十分感谢!!!!!
- 一个可以正常运行的工程,在MyEclipse中重新编译后就不能运行了
- TOMCAT源码分析(启动框架)已经完成, 大家共同学习, 共同进步!
- J2EE 具体是什么意思?
- jsp读取My SQL数据显示乱码
- freemarker标签用多了会影响性能吗
- javaweb服务器端如何区分手机客户端请求与电脑客户端请求?
一般用Struts2开发时,页面的编码都设置成utf-8
在struts.xml中是<constant name="strust.i18n.encoding" value="UTF-8"></constant>就是不行,
1、有可能是struts2内部机制获取参数乱码在struts.xml中配置
<constant name="struts.i18n.encoding" value="UTF-8"/>
直接写个filter继承StrutsPrepareAndExecuteFilter然后在web.xml配置这个filter
public class StrutsFilter extends StrutsPrepareAndExecuteFilter {
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("UTF-8");
arg1.setContentType("text/html;charset=UTF-8");
super.doFilter(arg0, arg1, arg2);
}
}
2、或者是你数据库中乱码问题。你设置hibernate的连接后边设置参数让插入数据库的值转换成数据库的格式
3、有可能是tomcat的问题找到配置文件更改一下
4、在Action中用 new String(str.getBytes("ISO8859_1"), "UTF8"),进行转码
我也试了网上的所有方法,就是不行,也全部用utf-8的编码方式。
后来找了很久,终于找到原因了,因为我以前做过,没出现过乱码。
原来是包的问题,以前我下的是struts-2.1.8.1的版本,而我这次是直接用myelcipse直接加入的,是2.0的版本,所以就出现乱码了,而导入2.1.8的版本之后这问题就解决了。
还有就是你得到的String用
new String(str.getBytes("ISO8859_1"), "UTF8"),进行转码这种方法也能解决。
LZ的问题我是深深体会过, 为什么乱呢.?下面我来解释:
如果你用POST方式提交,只要页面编码是UTF-8,是绝对不会乱的, 因为信息是从请求体过去的!
如果是get,如果你没有设置过你的服务器的URIEncoding="UTF-8"的话, 默认是会以操作系统相关的GBK来处理, 所以你的参数被GBK编码, 又被Struts2的UTF-8解,这个时候就乱了.! 所以直接去找服务器的配置文件,比如说tomcat的server.xml配置相应的<Connector> 下加个属性URIEncoding="UTF-8"
<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>
这个很恶心
实在不行,建议直接转成unicode
,如果还不行,加个过滤器吧,把字符都过滤成utf-8.
乱码问题,程序员永远的痛--------------
2:检查你的提交方式 最好用Post 用get提交 拦截器是无法解析url上面的乱码的
这些检查完以后 基本上应该没问题了
<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的问题
构造一个新的 String,方法是使用指定的字符集解码指定的字节数组。例:String s = new String("中文","utf-8");
属性URIEncoding="UTF-8"实际上是覆盖tomcat中connector类中的默认编码iso-8859-1。可参考connector查看详细信息