使用ASP.NET向MySQL數據庫插入中文時亂碼問題

問題描述:

使用ASP.NET寫了一個問卷調查系統,使用註冊,創建問卷等向數據庫插入中文字符時,mysql數據庫中亂碼了。但是從數據庫從讀取的中文字符可以正常的顯示。在數據庫中是可以正常的插入中文字符。

-------------------------------------------------------------------------------------------------------------------------------------------------

以下是我的解決思路:

1.查看亂碼問題是從前臺到後臺中出現,還是後臺到數據庫中出現的。經過調試,從前臺傳入的字符是正常的。是插入到數據庫中出現的。

2.更改數據庫字符集:

查看數據庫的字符集,將Latin1改爲utf8,確保數據庫和表的字符集也是utf8。

將所有的character_set_xxx更改爲utf8之後,中文字符在數據庫中又插入不進去了。於是,set names gbk;解決了該問題。具體原因見:https://blog.csdn.net/Qiana_/article/details/90639347

如下截圖是最新版本設置。

結果是亂碼問題並未解決。

3.同一頁面編碼:

在ASP.NET的Web.config中的<system.web>標籤內,添加

    <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" fileEncoding="utf-8"/>
還是沒有解決。

4.在連接字符串中設置編碼Charset=utf8

  <connectionStrings>
    <add name="myconnstring" connectionString="server=localhost;DataBase = survey;User Id = root;Password = XXX;Charset=utf8;" providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>

結果問題解決了,可以正常的插入中文了。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

插入一句,ASP.NET從MySQl數據庫中讀取數據亂碼問題:

1.可以在connectionStrings中加入Charset=utf8

2.如果不能解決亂碼問題,那麼可以將讀取出數據編碼格式進行轉換。

參考自:https://www.cnblogs.com/zzxbest/archive/2010/11/22/1883967.html

    //讀出時進行轉換
    public string ISO8859_GB2312(string read)
    {
        //聲明字符集
        System.Text.Encoding iso8859, gb2312;
        //iso8859
        iso8859 = System.Text.Encoding.GetEncoding("iso8859-1");
        //國標2312
        gb2312 = System.Text.Encoding.GetEncoding("gb2312");
        byte[] iso;
        iso = iso8859.GetBytes(read);
        //返回轉換後的字符
        return gb2312.GetString(iso);
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章