Chinaunix首页 | 论坛 | 博客
  • 博客访问: 156655
  • 博文数量: 23
  • 博客积分: 390
  • 博客等级: 一等列兵
  • 技术积分: 157
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-13 16:25
文章分类

全部博文(23)

文章存档

2013年(4)

2012年(19)

我的朋友

分类: 系统运维

2012-08-10 11:11:25

 最近 帮一个同事解决了一个乱码问题。这个乱码的情况比较诡异,情形是 部署在eclipse上的web程序访问会出现乱码,只要是涉及到中文增删改,string转码都会出现乱码,eclipse上使用的是tomcat服务器,数据库是oracle。而 直接使用tomcat部署程序或把源代码放到我的电脑中部署 则不会出现乱码。
   解决思路就是,这b的eclipse环境出问题了。解决方法就是:打开这b的eclipse   run-run configurations  点击 common标签页  发现他的console encoding编码竟然是utf-8,修改为gbk成功解决。
  根据网上查询,这样解决的原因是: Java总是根据file.encoding去访问数据库,而多数人用的windows简体中文版,java默认启动时file.encoding=GBK。但是 你在eclipse中启动时  用utf-8  那么内嵌启动时自动设置了file.encoding=UTF-8   这样2者不一致就出现了乱码   只要改成gbk就可以跟终端运行的情况一样,解决这个问题。当然  你也可以修改oracle的连接时指定数据库编码或者 file.encoding(其实 我没试过  哈哈   你们可以试试)

--------------
下面是我的解决办法
Strut2 + MySql + Hibernate + ajax(jQuery)中文乱码解决办法:
1. 网页页面使用utf-8


2. ajax默认使用utf-8传输数据, 但最好使用post, 不要使用get

3. Struts2中使用UTF-8.
3.1 在struts.properties中加上: struts.i18n.encoding=UTF-8
[3.2 使用Filter: 从页面中传输数据到Struts2, 需要使用过滤器把数据在交给struts2前转换成utf-8的: http://stevieliu.blogchina.com/stevieliu/6223098.html]
试过不使用3.2照常可以收到中文.

4. 数据库也要使用utf-8, 在建表时设置好.


5. hibernate.cf.xml配置文件中与数据库的连接符串也要标明使用的编码为utf-8: jdbc:mysql://localhost:3306/mlm?useUnicode=true&characterEncoding=UTF-8

6: Tomcat也使用UTF-8
  6.1: Tomcat/bin/catalina.bat中开始部分(大概51行处)添加set CATALINA_OPTS=-Dfile.encoding=UTF-8
或CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF-8"
  6.2:
  connectionTimeout="20000"  
  redirectPort="8443" />
Eclipse启动Tomcat会修改Tomcat的运行编码环境,从终端启动的又是另一种编码环境,所以Tomcat的配置也要手动修改

7: HttpServletResponse(request)也要设置编码:response.
setCharacterEncoding("UTF-8");
阅读(2094) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~