咨詢
交流群
電話

MySQL數據庫導入數據后,數據是亂碼

文檔 > 使用心得 2017-07-28 11:08 閱讀

導入數據時,有以下幾個方面會影響MySQL數據庫的編碼。

安裝時候的編碼設置

MySQL默認安裝的編碼是latin1。安裝時最好選擇為utf8utf8mb4。需要注意的是,MySQL的編碼分為客戶端(指命令行客戶端)和服務器端兩部分。

服務器端的編碼是指數據庫服務器本身的編碼,即創建數據庫的時,數據庫的默認編碼。

客戶端編碼是指使用命令行客戶端連接數據庫時,使用的編碼。比如在命令行里面輸入mysql命令連接數據庫,這時就是使用MySQL命令行客戶端。

創建數據庫的編碼設置

在創建數據庫時,可以指定數據庫編碼。這是決定數據庫編碼最終的一步,安裝時設置的編碼只是默認的編碼,也就是在創建數據庫時,如果沒有指定編碼,則會使用數據庫默認的編碼。

連接數據庫的編碼設置

在命令行里面輸入mysql命令連接數據庫(包括使用source命令導入數據),會使用MySQL客戶端的編碼設置連接數據庫。在使用MySQL其他客戶端直接執行sql文件(如Navicat的“運行SQL文件”功能),也可能會使用MySQL客戶端的編碼。

數據庫腳本文件的編碼

在Windows創建的文件格式一般是GBK編碼。Jspxcms的數據庫腳本文件使用的是UTF-8編碼。

怎樣導入才能不亂碼

要做到導入數據不亂碼,要做到三點:數據庫編碼為UTF-8、客戶端編碼為UTF-8、數據庫腳本文件編碼為UTF-8。

其中Jspxcms的數據庫文件本身就是UTF-8編碼,數據庫編碼在創建數據庫的時候可以選擇為UTF-8編碼。這兩個條件較容易達成,但MySQL客戶端編碼則需要在安裝的時候設置,而這一個往往很容易被忽略,且安裝之后較難修改(需修改MySQL的配置文件,重啟MySQL),是發生亂碼的主要根源。即使是使用可視化客戶端,如果直接選擇執行SQL文件,也是可能會使用MySQL客戶端編碼。

因此,要避免亂碼最好的辦法是在確認數據庫編碼為UTF-8的前提下,打開sql腳本文件,將文件內容復制到MySQL可視化客戶端執行(如Navicat的查詢窗口)。

數據庫的數據沒有亂碼,而網頁顯示的數據有亂碼

這種情況通常為MySQL數據庫版本較新且MySQL驅動較舊導致的,如使用MySQL5.7,而MySQL驅動版本較低(如mysql-connector-java-5.1.24.jar,位于/WEB-INF/lib目錄),這時只要使用新版本的數據庫驅動即可解決(如mysql-connector-java-5.1.41.jar)。

恩平市| 澄迈县| 泸州市| 安义县| 阿荣旗| 农安县| 托克逊县| 错那县| 蚌埠市| 新津县| 徐水县| 井冈山市| 自治县| 安康市| 怀来县| 鄱阳县| 吉安市| 仪征市| 龙井市| 平和县| 齐河县| 丰镇市| 上栗县| 林州市| 托克逊县| 海兴县| 马边| 准格尔旗| 陵水| 道孚县| 延安市| 肃宁县| 潮州市| 吉安市| 夏河县| 凤山县| 平乡县| 靖江市| 襄汾县| 富阳市| 平罗县|