您的位置:首页 > 数据库 > MySQL

关于在MySQL 、 VC、 JSP 中使用UTF-8解决中文生僻字乱码的问题

2009-06-13 10:08 1541 查看
近日在一java项目中出现中文生僻字就会出现问号的现象,上网找了些资料,说将GB2312编码改为GBK或者UTF-8就会无问题,但多数文章都讲的不详细,如果只是简单的将jsp页面的GB2312编码替换也解决不了问题,因为我的项目需要VC和java连接mysql数据库,研究了一天总算顺利解决,总结如下:

1.我原来的数据库是用GB2312编码的,这样无论vc还是jsp都可以正常显示中文,但遇到生僻字,jsp就会显示问号,vc就正常显示,这是java比较严格的字符编码造成的。

CREATE TABLE `tb_folder_info` (
`id` int(11) NOT NULL auto_increment,
`typechildid` int(11) default NULL,
`foldername` varchar(100) character set latin1 default NULL,
`folderinfo` text character set latin1,
`path` varchar(255) character set latin1 default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312 ROW_FORMAT=FIXED;

2.由于数据库以前的编码是GB2312,这样会给日后软件国际化带来麻烦,所以决定将数据库转换成UTF-8编码:

CREATE TABLE `tb_folder_info` (
`id` int(11) NOT NULL auto_increment,
`typechildid` int(11) default NULL,
`foldername` varchar(100) default NULL,
`folderinfo` text,
`path` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED;

3.数据库编码转换后,现在要解决MySQL-Front等的数据库管理软件显示乱码的问题,经过一番折腾,终于发现连接数据库的字符集要选择GBK,而不是UTF-8,这样你在MySQL-Front中使用insert语句导入以前的数据也是显示中文的了。

4.现在又出现VC程序显示一堆问号,网上又找了些资料,发现只要在读写数据库前加上一句mysql_query(sock, "SET NAMES GBK"); 这条语句可以加在mysql_real_connect后面,一次就行。

5.既然VC是GBK编码,jsp端也要用GBK编码,new String(strvalue.getBytes("ISO-8859-1"), "GBK");

以前曾经错误的认为数据库的编码是UTF-8,程序也要选择utf-8,但这样显示出来的是乱码,所以程序端编码要统一为GBK,最后调试一下,中文问题解决了,生僻字也可以显示了,问题完满解决^-^
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐