星期五, 十一月 24, 2006

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

2周一开始折腾中文问题,也算是老同志遇上老问题了,今天总算搞定了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编码。

没有评论: