MySQL4.1的latin1编码与中文、藏文乱码解决方案-阿里云开发者社区

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

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,如需转载请自行联系原作者

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

相关文章
mysql之字符编码问题
问题描述:新建数据库并新建表插入数据,中文乱码问题,即便将字符集通过命令行或者mysql客户端改为utf-8还是乱码。 问题原因:此问题目前主要出现在Linux为centos7安装mysql上,主要是通过源码编译安装mysql。
801 0
MySQL数据库常见错误及解决方案
MySQL数据库常见错误及解决方案   > ...
646 0
Mac mysql 解决中文乱码
Mac mysql 解决中文乱码问题 出现“???”之类的无法识别的乱码 到/etc目录下自己建一个my.cnf文件(需要最高权限,使用sudo su),然后写入内容: [client] default-character-set=utf8 [mysqld] character-set-server=utf8 保存,修改。
966 0
Mysql、 VS2010、 Entity Frameworkt和网页四者之间的编码问题
需要在这三者中统一,例如UTF8, 1. MYSQL: 保证所有的的列都是UTF8格式. 2. VS2010: 在data server建立连接时,选择advance,将chracterset设成utf8,这样在VS2010里查看和更改MYSQL中的数据时,就不会因为不匹配而看到一大堆的乱码了.
471 0
mysql太多连接问题及解决方案
不管是JavaEE开发还是其他,只要是Linux系统下安装的mysql,通常默认最大连接为270。 如果你的客户端连接超过这个数,通常要么是配置文件修改,或者是命令行修改,配置文件修改和命令行修改的区别是,配置文件,既然是文件通常持久化到硬盘,保存最长,如果是命令行的话,仅仅只能保持在Mysql运行状态,如果一旦MySQL因为某种原因宕机或者关闭了,命令行的方式就失效了。
936 0
MYSQL 创建函数出错的解决方案
  在使用MySQL数据库时,有时会遇到MySQL函数不能创建的情况。下面就教您一个解决MySQL函数不能创建问题的方法,供您借鉴参考
1529 0
mysql忘记root密码解决方案
mysql忘记root密码解决方案 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息。
5109 0
用二进制来编码字符串"adceadaa",需要能够相据编码,解码回原来的字符串,则至少需要二进制字符的长度是?
利用哈夫曼编码,字符出现的频率越大,则使用越短的二进制进行编码,构建最优二叉树。
710 0
13694
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载