浏览 5005 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-08-02
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 { 方法之后 就没有问题。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-08-02
为什么不一开始使用utf8???
采用latin1用什么好处 能告知一下好吗? |
|
返回顶楼 | |
发表时间:2008-08-02
这个数据库是多个地方要使用,不止我这一个
|
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间:2008-10-20
估计是历史问题!我现在这个项目也碰到了
|
|
返回顶楼 | |
发表时间:2008-10-20
引用 现在解决方法是修改jdbc的驱动程序,修改ResultSetRow中的 protected String getString(String encoding, ConnectionImpl conn, byte[] value, int offset, int length) throws SQLException { 方法之后 就没有问题。 您能不能说得详细些?谢谢! |
|
返回顶楼 | |
发表时间:2008-10-20
历史遗留问题是比较麻烦。
要改成utf-8工作量太大,不改的话又会遇到编码问题。 |
|
返回顶楼 | |
发表时间:2008-12-10
請問一下
修改ResultSetRow中的 protected String getString(String encoding, ConnectionImpl conn, byte[] value, int offset, int length) throws SQLException { 是指怎樣的修改,可以分享一下嗎? 感謝 :> |
|
返回顶楼 | |