数据库中文mybatis连接mysql数据库插入中文乱码
文章結(jié)束給大家來個(gè)程序員笑話:[M]
????對(duì)于mysql數(shù)據(jù)庫的亂碼問題,有兩中情況:
????1. mysql數(shù)據(jù)庫編碼問題(建庫時(shí)設(shè)定)。
????2. 連接mysql數(shù)據(jù)庫的url編碼設(shè)置問題。
????
????對(duì)于第一個(gè)問題,目前個(gè)人發(fā)明只能通過從新建庫處理,建庫的時(shí)候,選擇UTF-8字符集。我試過修改現(xiàn)有數(shù)據(jù)庫字符集為UFT
????-8,但是根本不起作用,插入的中文仍然亂碼(中文表現(xiàn)成:???)。重建庫時(shí)選擇字符集為UTF-8之后,中文正常表現(xiàn)了。
????
????對(duì)于第二個(gè)問題,是這樣的情況:我建庫時(shí)設(shè)置了數(shù)據(jù)庫默許字符集為UTF-8,通過mysql workbench直接插入中文表現(xiàn)完整正常。但是應(yīng)用mybaits插入數(shù)據(jù)時(shí),中文表現(xiàn)成了"???"這樣的亂碼。但從數(shù)據(jù)庫獲取的中文不會(huì)亂碼。跟蹤數(shù)據(jù)庫操作,SQL語句中的中文還是表現(xiàn)正常的,但是插入到mysql數(shù)據(jù)庫后就亂碼了,于是判斷可能是數(shù)據(jù)庫連接的問題。后來在網(wǎng)上找了下資料,發(fā)明確切可以為mysql數(shù)據(jù)庫的連接字符串設(shè)置編碼方法,如下:
????jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
????
添加了useUnicode=true&characterEncoding=utf8參數(shù)之后,插入中文就正常了。
????
????
添加的作用是:指定字符的編碼、解碼格式。
每日一道理心的本色該是如此。成,如朗月照花,深潭微瀾,不論順逆,不論成敗的超然,是揚(yáng)鞭策馬,登高臨遠(yuǎn)的驛站;敗,仍滴水穿石,匯流入海,有窮且益堅(jiān),不墜青云的傲岸,有“將相本無主,男兒當(dāng)自強(qiáng)”的倔強(qiáng)。榮,江山依舊,風(fēng)采猶然,恰滄海巫山,熟視歲月如流,浮華萬千,不屑過眼煙云;辱,胯下韓信,雪底蒼松,宛若羽化之仙,知退一步,海闊天空,不肯因噎廢食。
????
???? 例如:假設(shè)mysql數(shù)據(jù)庫用的是GBK編碼(也可能是其它,例如Ubuntu下就是latin1),而項(xiàng)目數(shù)據(jù)庫用的是utf-8編碼。這時(shí)候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下兩個(gè)方面:
????
1. 存數(shù)據(jù)時(shí):
????
? ? ?數(shù)據(jù)庫在存放項(xiàng)目數(shù)據(jù)的時(shí)候會(huì)先用UTF-8格式將數(shù)據(jù)解碼成字節(jié)碼,然后再將解碼后的字節(jié)碼從新應(yīng)用GBK編碼存放到數(shù)據(jù)庫中。
????
2.取數(shù)據(jù)時(shí):
????
? ? ?在從數(shù)據(jù)庫中取數(shù)據(jù)的時(shí)候,數(shù)據(jù)庫會(huì)先將數(shù)據(jù)庫中的數(shù)據(jù)按GBK格式解碼成字節(jié)碼,然后再將解碼后的字節(jié)碼從新按UTF-8格式編碼數(shù)據(jù),最后再將數(shù)據(jù)返回給客戶端。
????
????
????
文章結(jié)束給大家分享下程序員的一些笑話語錄: 問:你覺得讓你女朋友(或者任何一個(gè)女的)從你和李彥宏之間選一個(gè),你覺得她會(huì)選誰?
答:因?yàn)槔钇G紅這種敗類,所以我沒女友!
總結(jié)
以上是生活随笔為你收集整理的数据库中文mybatis连接mysql数据库插入中文乱码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 入门到精通|有哪些相见恨晚的高效图表制作
- 下一篇: 泰禾智能:智能改变未来,成就工业设备行业