Myeclipse 7.0
Tomcat 6.0.18
spring 2.5
hibernate 3.2
mysql 5.1所有地方均设置为UTF-8,Tomcat URIEncoding也已经调整为UTF-8,参照的浪曦视频的OA工作流,但是一直无法顺利插入中文,在action中可以以ISO-8859-1的编码读入后正确显示,也就是表明应该是以ISO-8859-1的方式编码传输的,为何会这样,也在页面中设置过request和response的setCharacterEncoding为UTF-8,无效。痛苦了3天了,忘高手解决。工程源文件
http://www.namipan.com/d/OA.rar/96bb4d8f513201f3361b9fe8591a9b3b744a810a4bf25801哪位高手可以下载后试试。

解决方案 »

  1.   

    还有一个地方你设置了没,MYSQL的默认字符编码,我以前有个项目出现乱码
    就是MySql的字符编码没有设置
      

  2.   

    都设置过了,show variables like %char%  显示也为UTF-8,我现在初步判断应该是提交时的编码没有转为UTF-8,但是另一个直接JSP页面的小项目就没有这个问题,不过使用的GBK编码
      

  3.   

    lz用的mysql数据库吗?如果是的话,安装的时候要选择编码,否则后面中文都会是乱码。重装!
      

  4.   

    建议三步解决:1.重新安装mysql在安装时先择utf-8
                        这个我试过,安装好以后不管是建库时还是在配置文件时改的都没有用
                  2.网页默认编码utf-8
                3.用servlet过滤器控制读取中文这个可以参考http://blog.csdn.net/wyabc1986/archive/2009/06/09/4254373.aspxOK我就知道这么多了不知道能否解决
      

  5.   

    主要还是你的mysql了,其实action中tomcat中哪儿设置字符集都不是太多用的
    关键是你的数据库,重新配盒子一下你的mysql服务器就行了,记着手动选一个字符集
    乱码跟java的jvm,ie浏览器,数据库有关,底层数据库能处理好就OK了。
      

  6.   

    貌似浏览器地址栏直接传参数就默认采用的ISO8859-1编码 ,使用过滤器完事了
      

  7.   

    建议三步解决:1.重新安装mysql在安装时先择utf-8 
                        这个我试过,安装好以后不管是建库时还是在配置文件时改的都没有用 
                  2.网页默认编码utf-8 
                3.用servlet过滤器控制读取中文这个可以参考http://blog.csdn.net/wyabc1986/archive/2009/06/09/4254373.aspx 
      我帮他补充一点   还有就是你的提交方式是get还是post   如是post则可以用request和response来转码  如是用get的话 就要用getBytes()来转码
      

  8.   

    楼上说的很准确,你的乱码问题很可能是出在第一步和第三步上,我建议你重新安装下MySql,然后表单提交数据都改成Post方法.
      

  9.   

    好,今天晚上回去试试过来回复,另外也使用UTF-8编码的朋友是否能下载我的项目运行试试,看能否顺利插入中文
      

  10.   

    在mysql命令行中设置:set names 'gbk';
    在ssh项目中web.xml中配置一个spring提供的专门用来解决乱码的过滤器
      <!-- spring的编码过滤器 -->
      <filter>
      <filter-name>springEncoding</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>springEncoding</filter-name>
      <url-pattern>/*</url-pattern>
      </filter-mapping>
    这样乱码就可以解决了!
      

  11.   

    你是在链接中有汉字吗?可以考虑使用escape,EncodeURI来把汉字编码成%XXXX。这种编码是Tomcat可以识别的。
      

  12.   

    先来回复,回去试过了,重装mysql,使用自带的server instance config,初次配置时即使用了UTF-8,按照上面的方法配置了过滤器,也设置了form的提交方式为post,仍然无效。11楼的spring自带的过滤器也设置了,无效。我怀疑是不是我的过滤器设置的有问题?我是直接加在struts2的过滤器后面的,代码部分不会有错,
      

  13.   

    说明一下,我使用的是属性驱动方式,在一个访问新增用户的action中使用this.user.getName()获取用户名,然后使用new String(getbytes("ISO-8859-1"),"UTF-8")重新构造了一个字符串,在控制台可以正常输出中文
      

  14.   

    终于搞定了,具体可以参照http://blog.sina.com.cn/s/blog_4cc1f4390100b6gt.html的内容
    最终的问题出在filter的顺序上面,要将编码filter放在struts自带的前面就ok
      

  15.   

    1.你插数据库的时候,在那个方法的里面打印下你的中文,看是否正常显示。
    2.如果正常,则为数据库的问题,需要重新设置下数据库默认编码,建数据库时,数据库编码也要设置为UTF-8
    3.如果不正常,(看你说了,能正常打印),排除。
    ======
    乱码问题一般有几种方法:
    1.过滤器
    2.数据库
    3.tomcat
    4.jsp页面
    5.继续补充、
      

  16.   

    使用了方法测试,打印正常,不过使用的getbytes方法,编码8859-1,所以是action的编码传输问题,使用了过滤器以后搞定了