关于MSQL中文乱码的问题

ctrpretending 无  2013-11-29 09:10:41
客户的数据库是MYSQL,编码为latin1,现在没法改数据库的编码,中文在数据库里面就已经是乱码了,在MYSQL客户端查询时,使用set names latin1 查询出来没乱码,但是现在用JDBC怎么查都是乱码,使用JDBC发送set names latin1 再new string(result.getbyte('iso08859-1'),utf-8)也不管用,目前已经尝试过很多方法了,反正只要使用JDBC查询出来的中文就是乱码。。求教有什么方法啊。。。
PS:数据库是不能改的。只能查询
数据库:
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
...全文
311 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
我觉得楼主有必要弄清楚数据库里的乱码插入的时候是什么编码导致了插入乱码,然后再想解码的问题。
回复
ctrpretending 2013-12-02
引用 10 楼 dyflovexlp 的回复:
new string(result.getbyte('latin1'),utf-8)这样
引用 11 楼 qqZuok 的回复:
取出数据后再转码,这只是我的一个设想!
现在我通过new String(getBytes("Cp1252"),"UTF-8")转换得来的中文还是有一小部分是乱码,(MYSQL官网查到的latin1对应的JAVA转换是Cp1252)查看字节的情况是,正常的中文编码是: ffffffe6,ffffff8e,ffffffa5,ffffffe6,ffffff94,ffffffb6,ffffffe9,ffffffa3,ffffff9e,ffffffe4,ffffffbf,ffffffa1,ffffffe4,ffffffbf,ffffffa1,ffffffe6,ffffff81,ffffffaf 通过getBytes("Cp1252")得来的字节是: ffffffe6,ffffff8e,ffffffa5,ffffffe6,ffffff94,ffffffb6,ffffffe9,ffffffa3,ffffff9e,ffffffe4,ffffffbf,ffffffa1,ffffffe4,ffffffbf,ffffffa1,ffffffe6,3f,ffffffaf 所以导致最后一个中文是乱码。这个是不是还是没找对编码呢,还是什么情况
回复
qqZuok 2013-11-29
取出数据后再转码,这只是我的一个设想!
回复
ctrpretending 2013-11-29
引用 2 楼 huxiweng 的回复:
http://blog.csdn.net/yang3wei/article/details/6443680
引用 1 楼 zyfvcxz 的回复:
mysql连接时使用 latin1 这个编码,应该就能解决这个问题 jdbc:mysql://127.0.0.1/db_demo?characterEncoding=latin1
现在的情况是,我的链接参数不管带什么,比如:characterSetResults=utf8/iso8859_1/gbk&characterEncoding=utf8/iso/gbk 使用JDBC查询出来的都是数据库中原始的乱码。怎么转都转不成中文
回复
dyflovexlp 2013-11-29
new string(result.getbyte('latin1'),utf-8)这样
回复
郑燕辉 2013-11-29
mysql连接时使用 latin1 这个编码,应该就能解决这个问题 jdbc:mysql://127.0.0.1/db_demo?characterEncoding=latin1
回复
ctrpretending 2013-11-29
引用 5 楼 qq1145174853 的回复:
jdbc:mysql://localhost:3306/mysystem?characterEncoding=utf-8
试了,没用呀。
回复
ctrpretending 2013-11-29
引用 6 楼 q44725546 的回复:
Mysql可以修改编码的 你如果是安装版的Mysql你可以找到一个my.ini文件 里面可以改成UTF-8的 然后重新启动Mysql的服务
数据库是客户的,我这边没法改,只能查询。
回复
ctrpretending 2013-11-29
引用 4 楼 zyfvcxz 的回复:
这样看看行不。。 连接不用写什么编码 在建立连接之后就执行:set names latin1 。当作一条SQL语句进行执行
也不行,从resultset取出来就乱了。
回复
q44725546 2013-11-29
Mysql可以修改编码的 你如果是安装版的Mysql你可以找到一个my.ini文件 里面可以改成UTF-8的 然后重新启动Mysql的服务
回复
lkq_david 2013-11-29
jdbc:mysql://localhost:3306/mysystem?characterEncoding=utf-8
回复
郑燕辉 2013-11-29
这样看看行不。。 连接不用写什么编码 在建立连接之后就执行:set names latin1 。当作一条SQL语句进行执行
回复
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2013-11-29 09:10
社区公告
暂无公告