你這種情況不只是在Hibernate中會碰到,就是在我們現在主流的php中同樣會碰到,如果你的數據庫編碼與頁面編碼不一樣,就可能出現中文亂碼的問題。
今天在用Hibernate向MySQL中插入數據時出現了亂碼的問題,具體表現時我在插入前用utf-8打印出來中文時OK的,然後用MySQL Workbench設置成uft-8來顯示從MySQL中查詢出來的數據也是正確的,但是當我把代碼中的數據插入數據庫之後再進行查詢時查詢出來的就是亂碼了,不知道怎麼設置,因為兩頭utf-8都沒問題,那問題肯定時出在了中間環節,也就是connect的時候。網上到處找結果終於找到了。
我們只需要在hibernate.property或者時hibernate.cfg.xml(取決於你是怎麼連接數據庫的)文件中進行一下設置就OK了。
原本我的連接語句是這麼寫的:
代碼如下 復制代碼<property name="connection.url">
jdbc:mysql://localhost:3306/tablename
</property>
然後我修改成了:
代碼如下 復制代碼<property name="connection.url">
jdbc:mysql://localhost:3306/tablename?useUnicode=true&characterEncoding=utf8
</property>
發現還是不行,原來是要改成這樣:
代碼如下 復制代碼<property name="connection.url">
<![CDATA[
jdbc:mysql://localhost:3306/tablename?useUnicode=true&characterEncoding=utf8
]]>
</property>