mysqldump 匯出中文字變亂碼

mysqldump 匯出中文字變亂碼

mysqldump 匯出中文字變亂碼

資料來源: http://wangjenmin.blogspot.tw/2011/09/mysqldump.html

使用 mysqldump 將資料庫匯出,移轉到另一台主機時,再匯入到資料庫時,發現所有中文字都變成亂碼。請先連到 mysql ,輸入以下指令:

SHOW VARIABLES LIKE ‘character\_set\_%’;

如果顯示內容如下: 
+————————–+——–+
| Variable_name            | Value  |
+————————–+——–+
| character_set_client     | latin1 |
| character_set_connection | latin1 |
| character_set_database   | latin1 |
| character_set_filesystem | binary |
| character_set_results    | latin1 |
| character_set_server     | latin1 |
| character_set_system     | utf8   |
+————————–+——–+

最後一行告訴我們,系統是使用 utf8 編碼,但,其它的幾行其實告訴我們,mysql 是使用 latin1 做為預設編碼。

另外,還可以再執行以下指令:

show create database DBNAME;

顯示內容如果是: 

CREATE DATABASE `DBNAME` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */

表示這個資料庫是使用 utf8 編碼。 那,問題就不大了,使用

mysqldump -u DBuser -p DBname –default-character-set=latin1 > DBname.sql

將資料庫匯出,將 sql 檔案移到 新的主機後,先用 vi or gedit 開啟檔案,將裡頭所有的 latin1 取代為 utf8。

接下來就可以匯入sql檔案,應該就正常囉!!

————————————————————

自己C# 組合語法: StrCmd = String.Format(“\”” + path + “\\mysql\\bin\\mysqldump.exe\” -h{0} -P{1} -u{2} -p{3} -t -e -q –complete-insert –extended-insert=FALSE –default-character-set=utf8 –hex-blob {4} {5} > {5}.sql”, dbHost, dbport, dbUser, dbPass, dbName, StrTableName);
 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *