首页 文章 J2EE综合 Mysql 6开始提供对4-byte utf8的支持,试验未全部完成....

邮件订阅

Mysql 6开始提供对4-byte utf8的支持,试验未全部完成.... E-mail
用户评价: / 0
好 
技术文章 - J2EE综合
作者:Administrator   
2007-12-08 23:30
Mysql 6.0开始对4字节utf8提供支持,全面遵循RFC 3629规范。
见: http://dev.mysql.com/doc/refman/6.0/en/mysql-nutshell.html
很可惜,我没有试验成功,难道还只是"are expected to be added to MySQL 6.0: "?
而且,按目前的mysql开发日志中http://forge.mysql.com/worklog/task.php?id=1213写到
Version:Server-6.0
Status:In-Documentation
Priority:Low
Description:
Pushed to 6.0.4 on Nov 27/2007.             
估计6.0.4版本该功能正式提供。

从bug trace上看,5.2.6时mysql就已经支持过4byte utf8,utf32 utf16,不过我不知道如何才能下载到5.2.6? 估计要从配置库下载了自行编译吧。另外,6.0.4alpha的源代码配置库中也已经有了。

==================================
目前版本可以使用一个暂时的解决方法,就是5.1.3 connectors提供的useBlobToStoreUTF8OutsideBMP功能,功能倒是完整,但必须把字段类型设置为blob,性能自然很值得质疑.
String url = "jdbc:mysql://localhost:3306/u?useUnicode=true&characterEncoding=utf8&useBlobToStoreUTF8OutsideBMP=true&utf8OutsideBmpIncludedColumnNamePattern=a";


        connection 
= DriverManager.getConnection(url, username, password);
        Statement stmt 
= connection.createStatement();
        ResultSet rs 
= stmt.executeQuery("select * from t where a like '你%'");
        
while (rs.next()) {
            
// String name = new String(rs.getBytes("a"), "UTF-8");
            String name = rs.getString("a");
            System.out.println(name);
            
        }

        stmt.close();
        connection.close
试过
insert t values(0xF0A38D98);
select hex(a) from t,数据存取均正常。

鹏飞万里 2007-12-07 11:11 发表评论
Mysql 6.0开始对4字节utf8提供支持,全面遵循RFC 3629规范。
见: http://dev.mysql.com/doc/refman/6.0/en/mysql-nutshell.html
很可惜,我没有试验成功,难道还只是"are expected to be added to MySQL 6.0: "?
而且,按目前的mysql开发日志中http://forge.mysql.com/worklog/task.php?id=1213写到
Version:Server-6.0
Status:In-Documentation
Priority:Low
Description:
Pushed to 6.0.4 on Nov 27/2007.             
估计6.0.4版本该功能正式提供。

从bug trace上看,5.2.6时mysql就已经支持过4byte utf8,utf32 utf16,不过我不知道如何才能下载到5.2.6? 估计要从配置库下载了自行编译吧。另外,6.0.4alpha的源代码配置库中也已经有了。

==================================
目前版本可以使用一个暂时的解决方法,就是5.1.3 connectors提供的useBlobToStoreUTF8OutsideBMP功能,功能倒是完整,但必须把字段类型设置为blob,性能自然很值得质疑.
String url = "jdbc:mysql://localhost:3306/u?useUnicode=true&characterEncoding=utf8&useBlobToStoreUTF8OutsideBMP=true&utf8OutsideBmpIncludedColumnNamePattern=a";


        connection 
= DriverManager.getConnection(url, username, password);
        Statement stmt 
= connection.createStatement();
        ResultSet rs 
= stmt.executeQuery("select * from t where a like '你%'");
        
while (rs.next()) {
            
// String name = new String(rs.getBytes("a"), "UTF-8");
            String name = rs.getString("a");
            System.out.println(name);
            
        }

        stmt.close();
        connection.close
最后更新于: 2007-12-09 06:35
 

欢迎转载

本站文章欢迎转载,但请注明出处(http://www.javajia.com,Java家)