星期三, 十一月 22, 2006

中文问题(GBK:ajax,jsp,java,mysql)


周一开始折腾中文问题,也算是老同志遇上老问题了,今天总算搞定了GBK相关的设置,明天再看看纯UTF8存储和交互的设置,一并测试中英西法葡俄阿日等多语种共同存储的相关问题。


提交ajax中文数据,基本可以这么解决:(POST数据时,注意UTF8问题)



var oXmlHttp = zXmlHttp.createRequest();
oXmlHttp.open("post", oForm.action, true);
oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;; charset=UTF-8");
oXmlHttp.send(sBody);



后台回复前端ajax中文时,参照如下代码:


response.setHeader("Content-Type", "text/html;charset=GBK");
PrintWriter out = response.getWriter();
out.print("回复数据:这是中文,welcome");

下面再说mysql中文问题,使用的是mysql5.0, tomcat5.0:
(1)数据库缺省字符集
修改/etc/my.cnf文件.改成如下内容:
[mysqld]
default-character-set=gbk
(2)数据库中文
CREATE DATABASE dbname DEFAULT CHARACTER SET GBK;
SET NAMES GBK;
SET CHARACTER SET GBK;
(3)JDBC连接
DbDriver = com.mysql.jdbc.Driver
DbUrl = jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=gbk
(4)导入中文数据
mysql --default-character-set=gb2312 dbname < backupdbfile.mysql


测试了以"镕"为代表的GBK字符,mysql存储和jsp显示均没有问题。


提醒:在用户可以看到的jsp页面中,使用的是GBK编码。


没有评论: