MySQL Connector/Net出現亂碼的解決之道
Step1、確保MySql Server的編碼正確:
show variables like 'character%';
透過上述指令,查詢MySQL的字元編碼設定,結果如下圖所示。
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/