关闭

redhat9下使用mysql乱码的一个原因

914人阅读 评论(0) 收藏 举报

一个两年前的项目因要进行更新维护需要重新配一个测试环境。
原环境为:
redhat7.3
jdk1.3.1
Apache 1.3
tomcat 4.03
mysql 3.23.51

现环境:
redhat9
jdk1.42
tomcat 4.1.31
mysql 4.10

装好redhat, tomcat, mysql 并把数据倒入mysql后,用mysql的client可看到数据库内的内容正确。
把war包放到tomcat的webapps下,运行tomcat,war包自动解开。
打开页面成功,但当执行需要读取数据库的页面时出错
查log有 Util.getConnection() thrown java.sql.SQLException: No suitable driver
判断为jdbc不配合。查程序发现原来用的jdbc是mm.mysql-2.0.11-bin.jar
http://www.mysql.com下载新版的jdbc mysql-connector-java-3.0.8-stable-bin.jar后也不能用。
重装mysql换成mysql3.23.58,再倒数据设权限。
打开页面后发现英文页面正常中文页面乱码。
执行
export LANG=zh_TW.BIG5
export LC_ALL=zh_TW.BIG5
后中文页面正常,英文页面乱了
再来
export LANG=en_US.iso8859_1
export LC_ALL=en_US.iso8859_1
中英文页面正常。
原来redhat9默认的locale是
LANG=en_US.UTF8
LC_CTYPE="en_US.UTF8"
LC_NUMERIC="en_US.UTF8"
LC_TIME="en_US.UTF8"
LC_COLLATE="en_US.UTF8"
LC_MONETARY="en_US.UTF8"
LC_MESSAGES="en_US.UTF8"
LC_PAPER="en_US.UTF8"
LC_NAME="en_US.UTF8"
LC_ADDRESS="en_US.UTF8"
LC_TELEPHONE="en_US.UTF8"
LC_MEASUREMENT="en_US.UTF8"
LC_IDENTIFICATION="en_US.UTF8"
LC_ALL=en_US.UTF8

改动后为
LANG=en_US.iso8859_1
LC_CTYPE="en_US.iso8859_1"
LC_NUMERIC="en_US.iso8859_1"
LC_TIME="en_US.iso8859_1"
LC_COLLATE="en_US.iso8859_1"
LC_MONETARY="en_US.iso8859_1"
LC_MESSAGES="en_US.iso8859_1"
LC_PAPER="en_US.iso8859_1"
LC_NAME="en_US.iso8859_1"
LC_ADDRESS="en_US.iso8859_1"
LC_TELEPHONE="en_US.iso8859_1"
LC_MEASUREMENT="en_US.iso8859_1"
LC_IDENTIFICATION="en_US.iso8859_1"
LC_ALL=en_US.iso8859_1

把export LANG=en_US.iso8859_1  export LC_ALL=en_US.iso8859_1 写入/etc/profile重启成功。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:37359次
    • 积分:464
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:7篇
    • 译文:0篇
    • 评论:9条
    最新评论