关于mysql latin1编码时候的乱码有关问题的解决

关于mysql latin1编码时候的乱码有关问题的解决

关于mysql latin1编码时候的乱码问题的解决

场景:

1. 数据库: mysql5 字符集latin1

2. 应用程序(java): GBK编码

3. 数据库连接字符串

jdbc:mysql://host:port/dbname

4. 取出之后转码:

getBytes(“ISO-8859-1”) , “GBK”)

5. java驱动:

mysql-connector-java-5.1.6-bin.jar

mysql-connector-java-5.1.5-bin.jar

mysql-connector-java-5.0.4-bin.jar

现象:

大部分中文都能够正常显示

就是有小部分代码,如団等多个字符无法正常显示。

使用上面的3中驱动都无法解决该问题

但是使用C++去取能正常取得。

解决方法:

debug发现是java驱动的问题,

在驱动5版本中,所有的以latin1转码的,在取回来的时候,会全部转成是

Cp1252,cp1252在转数据的时候,会把一些字,如:団 转错掉。

现在解决方法是修改jdbc的驱动程序,修改ResultSetRow中的

protected String getString(String encoding, ConnectionImpl conn,

byte[] value, int offset, int length) throws SQLException {

方法之后 就没有问题。

1 楼 xmvigour 2008-08-02  

为什么不一开始使用utf8???

采用latin1用什么好处 能告知一下好吗?

2 楼 hhongq 2008-08-02  

这个数据库是多个地方要使用,不止我这一个

3 楼 mathgl 2008-08-02  

use utf-8 as table encoding is much better.

before trying to fetch record

send “set names gbk;” to server first

it probably can solve some coding problems

4 楼 FGhost 2008-10-20  

估计是历史问题!我现在这个项目也碰到了

5 楼 FGhost 2008-10-20  

引用

现在解决方法是修改jdbc的驱动程序,修改ResultSetRow中的

protected String getString(String encoding, ConnectionImpl conn,

byte[] value, int offset, int length) throws SQLException {

方法之后 就没有问题。

您能不能说得详细些?谢谢!

6 楼 stephen830 2008-10-20  

历史遗留问题是比较麻烦。

要改成utf-8工作量太大,不改的话又会遇到编码问题。

7 楼 frankiekuo 2008-12-10  

請問一下

修改ResultSetRow中的

protected String getString(String encoding, ConnectionImpl conn,

byte[] value, int offset, int length) throws SQLException {

是指怎樣的修改,可以分享一下嗎? 感謝 :>

关于mysql latin1编码时候的乱码有关问题的解决

相关文章:

你感兴趣的文章:

标签云: