昨天把項目部署到服務器上後連的是SC的騰訊雲數據庫,測試後發現當往在頁面上往數據庫插數據會出現亂碼問題,就是這個樣子,輸入漢字都是???,輸入英文就沒事:mysql
由於在本地測試用本地的數據庫都沒事情,插數據度數據都一點問題都沒問題,就考慮到了應該是JDBC鏈接的時候的URL編碼問題,在修改以前,咱們的鏈接是這樣的:sql
jdbc:mysql://55e1aacb0d253.sh.cdb.myqcloud.com:11462/sh_books
網上搜了一下,說要在鏈接mysql數據庫的時候通常都會在url後面添加useUnicode=true&characterEncoding=UTF-8,這樣是修改後的數據庫
jdbc:mysql://55e1aacb0d253.sh.cdb.myqcloud.com:11462/sh_books?useUnicode=true&characterEncoding=UTF-8
運行了下,報錯了報錯了!! 竟然報錯了!錯誤提示的一部分是這樣的:服務器
對實體 「characterEncoding」 的引用必須以 ‘;’ 分隔符結尾。ide
搜了一下,知道爲何了,在xml的配置文件中 ;要用 &
代替,這是HTML中經常使用的字符實體,改完後呢就是這個樣子啦:測試
jdbc:mysql://55e1aacb0d253.sh.cdb.myqcloud.com:11462/sh_books?useUnicode=true&characterEncoding=UTF-8
問題完美解決,可是爲何要這樣呢? 搜了一下相關的資料編碼
咱們在,可是問什麼要添加呢?url
咱們添加這個的添加的做用是:指定字符的編碼、解碼格式。spa
例如:mysql數據庫用的是gbk編碼,而項目數據庫用的是utf-8編碼。這時候若是添加了useUnicode=true&characterEncoding=UTF-8 ,那麼做用有以下兩個方面:code
存數據時:
數據庫在存放項目數據的時候會先用UTF-8格式將數據解碼成字節碼,而後再將解碼後的字節碼從新使用GBK編碼存放到數據庫中。
取數據時:
在從數據庫中取數據的時候,數據庫會先將數據庫中的數據按GBK格式解碼成字節碼,而後再將解碼後的字節碼從新按UTF-8格式編碼數據,最後再將數據返回給客戶端。
注意:在xml配置文件中配置數據庫url時,要使用&的轉義字符也就是&
例如:
<property name="url" value="jdbc:mysql://localhost:3306/email?useUnicode=true&characterEncoding=UTF-8" />
顯示結果 | 說明 | Entity Name | Entity Number |
---|---|---|---|
顯示一個空格 | |
  |
|
< | 小於 | < |
< |
> | 大於 | > |
> |
& | &符號 | & |
& |
「 | 雙引號 | " |
" |
顯示結果 | 說明 | Entity Name | Entity Number |
---|---|---|---|
? | 版權 | © |
© |
? | 註冊商標 | ® |
® |
× | 乘號 | × |
× |
÷ | 除號 | ÷ |
÷ |