还是乱码问题,折磨几天了,跪拜求指导,磕头了!

huanglishu 2013-05-17 09:33:54
全局的过滤器:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.mmis.publicClass.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB18030</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
JSP默认设置了为GB18030:
<% page language=”java” import=”java.util.*” pageEncoding=”GB18030>
数据库创建的编码为GBK:my.ini中为:default-character-set=gbk
Action中的为:<constant name="struts.locale" value="zh_CN"></constant>
<constant name="struts.i18n.encoding" value="GB18030"></constant>
Tomcat 中server.xml文件中URLEncoding为:GBK
我尝试在控制台中往数据库输入中文,没错,在JSP中取得时候显示的也没错,就是在JSP表单中输入中文然后保存的时候,进入数据库就变成乱码了。上面能牵扯到编码的地方都列出来了。
...全文
221 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Intboy 2013-05-18
  • 打赏
  • 举报
回复
干嘛不用utf-8啊?
huanglishu 2013-05-18
  • 打赏
  • 举报
回复
引用 17 楼 fengspg 的回复:
干嘛不用utf-8啊?
想用的时候已经来不及了,重新设置的话工作量太大了!
蛋疼的IT 2013-05-17
  • 打赏
  • 举报
回复
在项目中。在html的属性总设置编码格式。
zhiling91 2013-05-17
  • 打赏
  • 举报
回复
QQ1987870278 8楼说的基本上很全。可以详细说说。
huanglishu 2013-05-17
  • 打赏
  • 举报
回复
各种尝试,各种不行!!!!我都快哭了
balabala_sean 2013-05-17
  • 打赏
  • 举报
回复
以下是个人关于乱码的一个总结,可以从下面的4个方面检查一下: struts2 Filter: package com.zndt.znfw.util; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter; /* 继承struts的核心过滤器 */ public class CharacterEncodingFilter extends StrutsPrepareAndExecuteFilter{ public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { arg0.setCharacterEncoding("UTF-8");/* 1 */ arg1.setCharacterEncoding("UTF-8");/* 2 */ super.doFilter(arg0, arg1,arg2); } } web.xml <filter> <filter-name>struts2</filter-name> <filter-class>com.zndt.znfw.util.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> tomcat URI问题: <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useBodyEncodingForURI="true" disableUploadTimeout="true" URIEncoding=”UTF-8”/> 取: 里面所设置的URIEncoding=”UTF-8”再进行一次编码,但是由于已经编码为utf-8,再编码也不会有变化了。(指的是后台代码request.setCharcterEncoding(“utf-8”)) 拿: 如果是从url获取编码,接受页面则是根据URIEncoding=”UTF-8”来进行解码的。(指的是浏览器拿到页面之后按照utf-8来解码) jsp: <%@ page language="java" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 数据库端的编码方式: 也设置为UTF-8 example: mysq url 驱动: jdbc:mysql://localhost/WEBCLDB?useUnicode=true&characterEncoding= UTF-8。
Guo_N_ing 2013-05-17
  • 打赏
  • 举报
回复
引用 6 楼 huanglishu 的回复:
[quote=引用 4 楼 Guo_N_ing 的回复:] web.xml 全文发上来
<?xml version="1.0" encoding="utf-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GB18030</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> --> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>com.mmis.publicClass.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GB18030</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> [/quote] 把编码过滤器 放到最上面
huanglishu 2013-05-17
  • 打赏
  • 举报
回复
引用 4 楼 Guo_N_ing 的回复:
web.xml 全文发上来
<?xml version="1.0" encoding="utf-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GB18030</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> --> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>com.mmis.publicClass.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GB18030</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
  • 打赏
  • 举报
回复
jsp编码格式改成GBK试试行不
Guo_N_ing 2013-05-17
  • 打赏
  • 举报
回复
web.xml 全文发上来
huanglishu 2013-05-17
  • 打赏
  • 举报
回复
引用 1 楼 Guo_N_ing 的回复:
后台接受导数据 先打印一下看是乱码不~
是过滤器的没有生效的原因吗?刚开始用的是spring自带的那个,没用,后来自己写了个,是不是根本就没有过滤到action的请求
huanglishu 2013-05-17
  • 打赏
  • 举报
回复
引用 1 楼 Guo_N_ing 的回复:
后台接受导数据 先打印一下看是乱码不~
试了下:----------------?????? ---------------??·??ú 保存之后,后台接受打印后乱码了
Guo_N_ing 2013-05-17
  • 打赏
  • 举报
回复
后台接受导数据 先打印一下看是乱码不~
huanglishu 2013-05-17
  • 打赏
  • 举报
回复
引用 15 楼 yzw19932010 的回复:
我也是无语了。不明白为什么要用那么多种编码。一个项目统一一种编码,这是最好避免乱码的方法。 还有,你要过滤action的编码,那你的filter要放在struts的过滤器上面,要不你自己的过滤器执行不了。 建议还是把编码统一试试,过滤器位置换换。
数据库安装的时候没选utf-8,就选了GBK,MyEclipse中JSP选编码的时候为了能通数据库同步就选了GB18030(与GBK是兼容的)MyEclipse好像没有GBK
william_yao 2013-05-17
  • 打赏
  • 举报
回复
我也是无语了。不明白为什么要用那么多种编码。一个项目统一一种编码,这是最好避免乱码的方法。 还有,你要过滤action的编码,那你的filter要放在struts的过滤器上面,要不你自己的过滤器执行不了。 建议还是把编码统一试试,过滤器位置换换。
  • 打赏
  • 举报
回复
一个项目,三种编码。这……
lt3 2013-05-17
  • 打赏
  • 举报
回复
1: 页面应该有两处需要修改编码; 2: web.xml文件的过虑器是否正确, 并且要放在文件内容的前面; 3: 在action接收是在转下编码, iso-8859-1; 注: 各处编码要统一; 因为数据在java中就出错了, 所以数据库暂时不需要检查。 只要存之前没有乱码的话, 再者数据库的编码是统一的话就不会出错了。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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