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

       近日在一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,最后调试一下,中文问题解决了,生僻字也可以显示了,问题完满解决^-^

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值