JPA連線mysql資料庫插入中文亂碼

2021-09-25 11:30:32 字數 869 閱讀 5223

對於mysql資料庫的亂碼問題,有兩中情況:

1. mysql資料庫編碼問題(建庫時設定)

目前個人發現只能通過重新建庫解決,建庫的時候,選擇utf-8字符集。我試過修改現有資料庫字符集為uft

-8,但是根本不起作用,插入的中文仍然亂碼(中文顯示成:???)。重建庫時選擇字符集為utf-8之後,中文正常顯示了。

2. 連線mysql資料庫的url編碼設定問題 

建庫時設定了資料庫預設字符集為utf-8,通過mysql workbench直接插入中文顯示完全正常。但是使用jpa插入資料時,中文顯示成了"???"這樣的亂碼。但從資料庫獲取的中文不會亂碼。跟蹤資料庫操作,sql語句中的中文還是顯示正常的,但是插入到mysql資料庫後就亂碼了,於是判斷可能是資料庫連線的問題。後來在網上找了下資料,發現確實可以為mysql資料庫的連線字串設定編碼方式,如下:

jdbc:mysql:
新增了useunicode=true&characterencoding=utf8引數之後,插入中文就正常了。

新增的作用是:指定字元的編碼、解碼格式。

例如:假設mysql資料庫用的是gbk編碼(也可能是其它,例如ubuntu下就是latin1),而專案資料庫用的是utf-8編碼。這時候如果新增了useunicode=true&characterencoding=utf-8 ,那麼作用有如下兩個方面:

1. 存資料時:

資料庫在存放專案資料的時候會先用utf-8格式將資料解碼成位元組碼,然後再將解碼後的位元組碼重新使用gbk編碼存放到資料庫中。

2.取資料時:

在從資料庫中取資料的時候,資料庫會先將資料庫中的資料按gbk格式解碼成位元組碼,然後再將解碼後的位元組碼重新按utf-8格式編碼資料,最後再將資料返回給客戶端。

JDBC連線MySQL資料庫批量插入資料過程詳解

1.讀取本地json資料 2.jdbc理解資料庫 3.批量插入 m en 引入jar包 com.alibaba fastjson 1.2.32 commons io commons io 2.4j a實現 import com.alibaba.fastjson.jsonarray import co...

JPA連線資料庫超時問題

因為一些業務需要,我們把mysql資料的連線超時時間設定成了30s。這就導致了當2個jpa訪問資料庫之間,有任何操作如果超過30s時,下乙個jpa查詢就會報連線超時 有事物的情況下 最先試了幾個常用的資料庫連線池 c3p0,druid 配置相關的重連引數,網上說的都可以用,但最後結果都沒用。不知道是...

關於使用JDBC連線MySQL資料庫插入中文亂碼

使用jdbc連線mysql時,在使用preparestatement去插入一條insert語句是,如果所傳的引數是中文的話,很多可能會在資料庫裡面顯示亂碼。而你在後台列印出來的資料並不是亂碼。這時候的原因可能有以下 一 資料庫建表時為對 的編碼方式進行指定,使 編碼方式停留在 charset lat...