最近在使用c3p0連接MySQL數據庫的時候遇到了一個棘手的問題,那就是中文字符亂碼了。經過一番搜索和嘗試,終于解決了這個問題。
首先,在連接MySQL時,需要設置字符集為utf8:
ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass("com.mysql.jdbc.Driver"); cpds.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"); cpds.setUser("root"); cpds.setPassword("password");
這里的“useUnicode”和“characterEncoding”設置了MySQL的連接字符集為UTF-8,保證了中文字符的正確顯示。
但是,在查詢操作時,如果還是出現亂碼,那么就需要設置連接和查詢語句的字符集:
Connection conn = cpds.getConnection(); Statement stmt = conn.createStatement(); conn.setCharset("utf8"); stmt.executeQuery("select * from user where name='張三'");
這里的“setCharset”設置了連接的字符集為UTF-8,同時在查詢語句中也要指定字符集為UTF-8。
總之,要解決c3p0和MySQL中文亂碼問題,需要在連接時設置字符集為UTF-8,在查詢時也要指定字符集為UTF-8。
上一篇mysql io密集