关于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 {
方法之后 就没有问题。