MySQL Connector/Net出現亂碼的解決之道

MySQL Connector/Net出現亂碼的解決之道

Step1、確保MySql Server的編碼正確:

 

show variables like 'character%';

透過上述指令,查詢MySQL的字元編碼設定,結果如下圖所示。

HelioHostVarible

 

 

ALTER database [資料庫名稱] character set  utf8 collate utf8_unicode_ci;

透過前述指令,將character set utf8參數逐一替換,確保下列四個參數的設定皆是utf8:

1、character_set_client

2、character_set_connection

3、character_set_database

4、character_set_results

Step2、確保.Net應用程式的App.Config的ConnectionString中包含下列設定:

 

charset=utf8;

 

Step3、確保匯入與匯出的SQL Script檔案的編碼格式也是UTF-8,以及Script中關於儲存引擎的設定值。

 

Step4、確保開發工具的檔案編碼格式也是UTF-8。

 

Alternative:

採用Encoding類別的Encoding.GetBytes Method (String)將文字編碼成為二進位資料之後寫入資料庫,再將二進位資料自資料庫讀出之後,透過Encoding.GetBytes Method (Char[])還原成為文字,以迴避編碼設定的問題。

 

資料來源:

[1]解決 PHP/mySQL 資料庫讀取中文顯示亂碼或問號
http://www.mrmu.com.tw/2011/01/09/php-mysql-utf8-unicode/

[2]win下修改mysql默认的字符集以防止乱码出现
http://www.cnblogs.com/24la/p/update-mysql-default-character.html

[3]read/write unicode data in MySql
http://stackoverflow.com/questions/1385994/read-write-unicode-data-in-mysql

[4]6.18 Character Set Considerations for Connector/Net
http://dev.mysql.com/doc/connector-net/en/connector-net-using-character-sets.html

[5]10.1.2 Character Sets and Collations in MySQL
http://dev.mysql.com/doc/refman/5.7/en/charset-mysql.html

[6]Code Page 1252 Windows Latin 1 (ANSI)
https://msdn.microsoft.com/en-us/library/cc195054.aspx

[7]MySQL 超新手入門(7)字元集與資料庫
http://www.codedata.com.tw/database/mysql-tutorial-7-charset-database/

[8]MySQL 超新手入門(8)儲存引擎與資料型態
http://www.codedata.com.tw/database/mysql-tutorial-8-storage-engine-datatype/

[9]提供遠端存取MySQL的免費網站
http://www.heliohost.org/home/