雲伺服器資料庫亂碼問題解決方案

2021-08-19 17:48:22 字數 2441 閱讀 2160

最近我的乙個spring boot專案發布到伺服器上的時候,資料庫中的中文字元顯示為??。在網上查詢了相關資料,得知資料庫亂碼有很多種可能情況。下面將我自己的解決方案分享出來。

首先我的雲伺服器是ubuntu server系統。系統預設沒有中文語言包。需要在系統中安裝中文語言包。具體操作如下:

1.執行

sudo apt-get install language-pack-zh-hans
2.執行

lacale -a
檢視系統內安裝的語言環境,此時可以看到出現了zh_cn.utf8,表明語言包已經安裝完成。

3.設定語言環境為utf-8,修改配置檔案。

vim ~/.profile
在其中新增

export lang="zh_cn.utf-8"

export lc_all="zh_cn.utf-8"

然後重啟伺服器。呼叫

locale
命令,可檢視到目前的環境為zh_cn.utf-8。

此時伺服器可以支援中文。

這一步在資料庫建立表的時候設定charset=utf8。例如:

create

table

ifnot

exists

`class` (

`cno` bigint(20) not

null comment '班級編號',

`cname`

varchar(25) not

null comment '班級名',

`cid` bigint(20) not

null comment '教師編號',

`courseid` bigint(20) not

null comment '課程號',

primary

key (`cno`),

unique

key`cno` (`cno`),

key`courseid` (`courseid`),

key`cid` (`cid`),

constraint

`class_ibfk_1`

foreign

key (`courseid`) references

`course` (`id`),

constraint

`class_ibfk_2`

foreign

key (`cid`) references

`user` (`id`)

) engine=innodb default charset=utf8;

關鍵點為最後要設定charset=utf8;

我們這個專案中互動採用的json格式。採用jackson進行解析,預設為utf-8,這裡不用設定。

url: jdbc:mysql://localhost/test?useunicode=true&usessl=false&characterencoding=utf-8
當我在做完上述的操作後,發現直接向資料庫插入資料不會出現亂碼,但是通過介面呼叫向資料庫中插入資料依舊會有亂碼問題。經過排查,發現資料庫server格式沒有設定為utf-8格式。

通過命令檢視資料庫編碼

之前我的character_set_server為latin1,才對導致上述的問題。通過命令可以修改字符集

set character_set_database=utf8;  

set character_set_server=utf8;

不過這樣修改的話,當重啟資料庫就會失效。可以採用修改配置檔案的方式來保證一次修改(以下內容基於mysql 5.7)。

修改路徑/etc/mysql/mysql.conf.d/下修改mysqld.cnf檔案。

在檔案中[mysqld]標籤下新增character-set-server=utf8

在mysql 5.7以下的版本,很多部落格都說的是修改my.ini檔案或者my.cnf,這個我沒有實驗過。但在5.7版本,開啟my,cnf可以看到是沒有直接配置的。

引起資料庫亂碼問題的可能情況非常多,要進行思考,找出可能的問題點,再進行測試。確定問題,再去尋找解決方案。

伺服器資料庫編碼格式問題解決方案

伺服器資料庫編碼格式問題 最近做專案在部署到阿里雲伺服器上之後出現了兩個問題 1 亂碼問題。2 ajax的php處理頁面裡面利用j程式設計客棧son encode 函式返回json資料,則資料庫返回的資料只能是utf8,如果是gbk則json也無法返回。發現是資料庫編碼格式問題,使用的編碼格式為ut...

關於MYSQL資料庫亂碼問題解決方案

1.檢視mysql資料庫編碼 show variables like char 2.編碼解釋 character set client mysql使用該編碼來解讀客戶端傳送過來的資料,例如該編碼為utf8,那麼如果客戶端傳送過來的資料不是utf8,那麼就會出現亂碼 character set res...

資料庫 中文漢字亂碼問題解決方案

1.通過控制台或者連線資料庫工具輸入如下命令檢視資料庫的編碼 show variables like character 顯示效果 客戶端的字符集 character set results 結果字符集 character set connection 連線字符集 這三個系統引數的作用 資訊輸入路徑...