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,http://bugs.mysql.com/search.php?search_for=utf32&status%5B%5D=Active&severity=&limit=30&order_by=&cmd=display&phpver=&os=0&os_details=&bug_age=0&tags=&similar=&target=&defect_class=all&workaround_viability=all&impact=all&fix_risk=all&fix_effort=all
不過我不知道如何才能下載到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,數據存取均正常。