mysql 解決字符集錯誤 正確摘錄

嫌疑人X的解憂雜貨店發表於2018-07-12

 linux系統版本Ubuntu 14.04.1   Mysql版本5.7.15

     這幾天在做管理系統時,做完之後放到前一段購買的騰訊雲上測試,發現請求資料傳送後顯示為亂碼,但是在本地測試時卻沒有發生這種情況,所以我感覺是Linux上Mysql資料庫的字符集問題,開啟資料庫後發現果然是這樣。

     在Mysql中使用下面程式碼檢視字符集

 show variables likechar%’
        會發現  database 的編碼方式是latin1 並且server的編碼方式也是latin1

     database的編碼方式如果沒有指定,預設使用的就是server 的編碼方式所以你會發現這兩個字符集是一樣的。

     然後在Mysql中進行了對database和server的編碼方式的修改

     

  1. set character_set_database=utf8;
  2. set character_set_server=utf8;
    結果重啟Mysql後發現字符集依然是原來的lantin1
    後來在網上搜集了一些資料,才知道如果想讓Mysql預設字符集改變需要配置檔案,檢視了一些文章發現大多數方法都是Mysql5.7.15之前的版本才適用,最後總結了一下,才測試正確,下面是配置方法。

    1.首先檢視etc安裝目錄下有沒有my.cnf檔案

  1. cd /etc
  2. ls -l | grep my.cnf
    如果存在可以跳過第二步

    2.my.cnf不存在需要到Mysql配置檔案路徑下複製一個檔案過來,配置檔案路徑在/usr/share/mysql下

我複製的是my-default.cnf檔案,在/etc中複製檔案過來,將檔案改名為my.cnf ,執行以下命令

  1. cd /etc
  2. cp /usr/share/mysql/my-default.cnf my.cnf

修改前檔案內容

  3.使用vi編輯器開啟my.cnf加入下面幾段話

建議先對檔案進行備份,不過因為檔案本來就是從/usr/share/mysql中複製過來的,也可以不用備份,然後開啟

  1. cp my.cnf my.cnf.bak
  2. sudo vi my.cnf

在[mysqld]上面加入下面兩句話

  1. [client]
  2. default-character-set=utf8
在[mysqld]最下面加入下面幾句話

  1. default-storage-engine=INNODB
  2. character-set-server=utf8
  3. collation-server=utf8_general_ci
然後儲存退出

加入後檔案內容


 4.重啟Mysql,再檢視字符集

 sudo service mysql restart

發現database和server的字符集都變成了utf8,無論怎麼修改,重啟後字符集都是utf8,證明你成功了。

如果設定到這裡還不行,再進入一下/etc/mysql/mysql.conf.d找到mysqld.cnf檔案

  1. cd /etc/mysql/mysql.conf.d
  2. sudo vi mysqld.cnf

然後在mysqld.cnf中[mysqld]下面加入這句話

character-set-server=utf8
然後再重啟下Mysql

原文連結: https://blog.csdn.net/jayzym/article/details/52735314

相關文章