关于MYSQL取出数据乱码的问题

J2EE 码拜 10年前 (2015-04-14) 1224次浏览 0个评论

我之前发过一个贴子,关于MYSQL乱码的问题:
http://bbs.csdn.net/topics/390655701

查了许多资料之后,找到了根本原因:
http://bugs.mysql.com/bug.php?id=64071
根据上面资料中所说,因为有5个字符在javaCp1252字符集中是没有定义的。但在latin1和iso8859-1中有定义,所以转换之后就出现了乱码。
但是无法解决。比如:

String str = "消息";
byte b[] = str.getBytes();
String new_str = new String(b,"Cp1252");
String s = new String(new_str.getBytes("Cp1252"));

//正常的“消息”getBytes&tohex之后是:
ffffffe4,ffffffbf,ffffffa1,ffffffe6,ffffff81,ffffffaf
//但是经过上面的操作之后,getBytes&tohex则变成了:
ffffffe4,ffffffbf,ffffffa1,ffffffe6,   3f   ,ffffffaf

求解决方案。。

关于MYSQL取出数据乱码的问题
15分
数据库用什么编码,你解码就用什么码解了。这个不能硬来的。
关于MYSQL取出数据乱码的问题
15分
mysql安装文件中的my.ini修改编码格式
关于MYSQL取出数据乱码的问题
引用 1 楼 u010684923 的回复:

数据库用什么编码,你解码就用什么码解了。这个不能硬来的。

根据MYSQL官网编码对应关系,latin1对应的JAVA编码就是Cp1252

关于MYSQL取出数据乱码的问题
引用 2 楼 chaozi_csbdnb 的回复:

mysql安装文件中的my.ini修改编码格式

数据库只能查,不能修改

关于MYSQL取出数据乱码的问题
20分
引用 4 楼 u011687117 的回复:
Quote: 引用 2 楼 chaozi_csbdnb 的回复:

mysql安装文件中的my.ini修改编码格式

数据库只能查,不能修改

你确定数据库的编码就是latin1?

关于MYSQL取出数据乱码的问题
引用 5 楼 u010684923 的回复:
Quote: 引用 4 楼 u011687117 的回复:
Quote: 引用 2 楼 chaozi_csbdnb 的回复:

mysql安装文件中的my.ini修改编码格式

数据库只能查,不能修改

你确定数据库的编码就是latin1?

肯定是啊,现在主要的问题是,转换Cp1252这里怎么处理,你可以试上我上面的代码,只要转成CP1252再转换来。肯定乱码了。

关于MYSQL取出数据乱码的问题
楼主碰到了你一样的问题,能说说你最后是怎么解决的吗?
关于MYSQL取出数据乱码的问题
引用 7 楼 rucihuyou 的回复:

楼主碰到了你一样的问题,能说说你最后是怎么解决的吗?

http://blog.csdn.net/u011687117/article/details/17093605
我博客有记录下,你可以看下适合不适合你


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于MYSQL取出数据乱码的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!