开发者社区> 技术小阿哥> 正文

MySQL4.1的latin1编码与中文、藏文乱码解决方案

简介:
+关注继续查看
MySQL4.1中字符串的编码是latin1,对中文、藏文支持都有问题,常常导致乱码。
这个问题明明是MySQL历史遗留的BUG,可是MySQL4已经在运营用中使用,不可能更换数据库来解决,那只能在程序上下功夫了。
 
一、中文乱码问题,这个比较好解决
 
分析latin1的编码实际上对应的是“ISO-8859-1”编码。
Java中,要正确的获取数据库数据显示中文,原理上需要将latin1转换为GBK、GB13080即可,Java从结果集读取getString()的时候,获取的数据实际编码是,实际对应的编码是“ISO-8859-1”。
 
这样就有办法了,读取数据,将数据从“ISO-8859-1”转为“GBK/GB13080”。
方法如下:
1、在JDBC的连接URL后面加上useUnicode=true参数。
2、将读取的结果集转码为GBK,比如:
String x = rs.getString("username"); 
String x1 = new String(xml.getBytes("ISO-8859-1"),"GBK")
 
二、藏文的解决办法
 
实际上,中文的GB2312中已经包含了所有的藏文字符,因此只要将编码转换为"GBK"即可。但是MySQL的JDBC驱动对藏文支持有有问题,只有老版本的mysql-connector-java-3.0.17-ga.zip对藏文支持良好。为此当然选择这个驱动了。
 
那么,自然得到藏文的解决方案:
1、在JDBC的连接URL后面加上useUnicode=true参数。
2、选择mysql-connector-java-3.0.17-ga.zip驱动
3、将读取的结果集转码为GBK,比如:
String x = rs.getString("username"); 
String x1 = new String(xml.getBytes("ISO-8859-1"),"GBK")
 
在网上看到一些解决中文的问题,不少人说修改MySQL5的驱动,可是怎么修改也没发现谁给出代码,经过尝试,MySQL驱动的开发者也不是吃干饭的,你想改就改啊,不容易的。再说改动可能引起新的问题,不是好办法。
 
顺便给大家看看藏文,不过你要想在自己电脑上,需要安装藏文字体:
 
 
 
欢迎交流此问题。


本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/235274,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ECS使用感受
阿里云服务器初体验
3 0
ECS使用体验
在阿里云领取了一个服务器,分享一下使用体验
5 0
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
5 0
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
5 0
高校学生参加飞天加速计划
linux与服阿里云服务器ECS, 阿里云服务器为提供了强大云计算能力。并且平台有很多开发者的使用教程,让我们新手也能很快上手去开发一些网站,希望更多的学生能够加入到阿里云,学习+实战让自己变得更强。
5 0
ECS使用有感
我是一名即将步入社会的大学生,随着网络法等相关专业知识的学习愈发强烈。查询资料时,常常会浏览到制作精美的个人站,因此产生了建设自己个人站的设想,但是由于业余时间少之甚少,同时听闻购买域名与服务器的价格不菲,因此计划一直未能实现
4 0
postgressql简单配置
postgresql.conf 和 pg_hba.conf 文件
3 0
13692
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载