解決mysql和視覺化工具Navicat與web應用中資料庫傳輸中文亂碼問題
關於網上解決亂碼的問題有許多也很成熟了,將mysql和他的視覺化工具Navicat之間統一編碼問題也有許多,本篇文章旨在回顧mysql與Navicat之間的統一編碼的所有方式,和web應用中傳輸中文亂碼做統一規劃,由於本人水有限,文中有不少錯誤的地方望批評改正。
大家都知道,之所以亂碼是因為編碼和解碼不統一所造成的,當然,我們所熟知的編碼格式中UTF-8,想必非常熟悉,UTF-8是國際編碼,能解析所有字元,故一般網站採用UTF-8編碼。
mysql方面編碼問題統一UTF-8解決方案:
修改mysql安裝目錄下my.ini檔案:
開啟mysql預設安裝路徑下的my.ini檔案,
設定 default-character-set=utf8 ,當然,需要你在建資料庫之前和建表之前設定,
然後,設定資料庫xxxx的編碼格式:
ALTER
DATABASE
`xxx`
DEFAULT
CHARACTER
SET
utf8
COLLATE
utf8_general_ci;
然後,設定xxx表的編碼格式為utf-8:
ALTER
TABLE
`testTable`
DEFAULT
CHARACTER
SET
utf8
COLLATE
utf8_general_ci;
好了,然後檢視資料庫編碼格式:
show
create
database
xxx; 為utf-8則說明編碼設定完成了
好了,然後檢視資料庫表的編碼格式:
show
create
table
testTable;
設定完成!MySql統一了utf-8編碼.
Navicat工具設定編碼解決方案:
很簡單,開啟工具,新建連線,開啟高階選項,設定如介面所示:
編碼設定自動就可以, 當然 ,也可以在該工具設定資料庫和表編碼格式,很簡單不做介紹了,右鍵表物件 資訊就可設定。
Web應用中設定編碼解決方案:
上述步驟設定完成後,我們做一個jsp介面用於過去mysql中的資料,並將表的資料呈現出來,設定可以編輯,和新增操作,
當然,還要設定編碼格式:
然後,在java中獲取連線時指定utf-8編碼:
// 獲取資料庫連線。 三個引數分別為 連線URL,使用者名稱,密碼
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/databaseWeb?charracterEncoding=UTF-8",
"root",
"root");
然後,設定request和response編碼統一,當然,推薦設定在filter中:
好了,啟動伺服器,開啟網頁:
沒問題,然後點選修改儲存:
還是沒問題,
當然,你通過MySql命令列檢視,和通過視覺化工具Navicat編輯檢視,和網頁上讀取和設定中文然後讀入mysql,都沒有出現亂碼問題,
至此,亂碼問題全部解決。