Linux下老项目更换JDK tomcat mysql 后引起乱码

我的问题是这样的

现在有一个系统(redhat 9),大概是03年的时候开发的。
现在我需要把这个系统升级一下并加入新的模块,把原来的用的tomcat4,mysql4,jdk1.4换为最新稳定版。
现在全部换过之后出现了乱码问题。
安装过程是这样的,我先安装了JDK 6,安装之后一切正常没有乱码,安装tomcat6也是一切正常。
但是安装完mysql就出现了乱码,mysql的编码采用GBK,mysql内的表中的数据还能显示正常为中文。并且查询出来的数据也能在页面上显示中文。

现在是登录之后记录日志的地方就成了乱码,[color=red]表现为sqlL语句含有中文的地方成了乱码[/color] 比如代码里是这样写的insert into log(eventScript,type) values('用户XX登录成功','登录'); 因为这里出现乱码,造成数据过长而没有成功插入数据库。

mysql原有驱动是在 /usr/local/mysql/mm.mysql.jdbc-1.2c,这个驱动好像很早,我没有见过,接触java的时间还不到两年,所以对老项目的这些配置不是很熟悉。
我把驱动换为mysql-connector-java-5.1.7-bin.jar 并放在WEB-INF/lib/ 下,启动后有乱码。 我把原先的驱动删除掉以后会报错,我把 mysql-connector-java-5.1.7-bin.jar这个驱动也放在了/usr/local/mysql/下并且删除了原有驱动,可以正常启动,同样有乱码。
mysql的连接参数中加了这样的语句 useUnicode=true&characterEncoding=GBK

-------------------------------------

现在我不知道是什么问题引起了乱码,请有过这方面经验的人给出出主意。

再说一句,在没有更换MySQL之前一切都是好的。代码没做任何改动。我怀疑是驱动的问题。

2个回答

你启动tomcat的用户, 要设置环境变量为中文.
1. 用这个用户登录, 执行命令:
[code="java"]$ export LANG=zh_CN.GBK[/code]

  1. 然后再用这个用户启动tomcat, 就可以了

如果嫌每次都要输入麻烦, 也可以在这个用户的配置文件
~/.profile里面增加这一行:
[code="java"]$ export LANG=zh_CN.GBK[/code],
然后这个用户每次登录就是中文环境了

.profile文件中增加的写错了, 去掉前面的$符号
[code="java"]export LANG=zh_CN.GBK [/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问