PreparedStatement 在mysql下中文亂碼解決方案
阿新 • • 發佈:2019-01-12
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
在頂目中無意中碰到PreparedStatement 在存DB時出現亂碼,困擾了好久終於解決問題
問題程式碼如下
pstmt = con.prepareStatement(INSERT_OFFLINE); pstmt.setString(1 , username); pstmt.setLong(2, messageID); pstmt.setString(3, StringUtils.dateToMillis(new java.util.Date())); pstmt.setInt(4 , msgXML.length()); pstmt.setString(5, “中文內容”); pstmt.executeUpdate();
除錯時可以看到在 pstmt.executeUpdate(); 行 pstmt 中的 “中文內容” 變成 ????
原因是設定datasource 的driver 時jdbc.url=jdbc:mysql://192.168.12.22:3306/ts 沒有指定編碼
可以按如下修改
jdbc.url=jdbc:mysql://192.168.12.22:3306/ts?characterEncoding=utf8
問題解決