mysql 配置 utf8 依然亂碼
阿新 • • 發佈:2018-12-26
有時候我們在 url 中配置了haracterEncoding=utf-8,並且對應的欄位的儲存方式也是 utf8 依然會出現亂碼的情況,這個時候你需要注意一下自己的驅動url的寫法是不是如下:
DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName("com.mysql.jdbc.Driver"); ds.setUrl("jdbc:mysql://localhost:3306/shiro?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&"); ds.setUsername("root"); ds.setPassword("123456");
這種寫法是有問題的,它並不能被 mysql 正確的解析,因為 & 是配置在 xml 檔案中時候的寫法,它再被解析成文字之後是 &,如果你在java 程式裡面寫的時候直接這麼寫的話不能被正確解析,也就是傳輸過去的字元還是不能用 utf8 進行解析。
正確的寫法應該如下:
DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName("com.mysql.jdbc.Driver"); ds.setUrl("jdbc:mysql://localhost:3306/shiro?autoReconnect=true&useUnicode=true&characterEncoding=utf-8"); ds.setUsername("root"); ds.setPassword("123456");
url配置在xml中寫法:
jdbc:mysql://192.168.87.104:3306/cfhd?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&
url配置在java程式中寫法: