Linux/windows下MySQL中文亂碼、變問號???-解決
一、檢視自己資料庫當前編碼
show variables like '%character%';
1.說明:
character_set_client:客戶端請求資料的字符集
character_set_connection:客戶機與伺服器連線的字符集
character_set_database:預設資料庫的字符集;如果沒有預設資料庫,就會使用 character_set_server指定的字符集(建議不要隨意更改)
character_set_filesystem:把 character_set_client轉換character_set_filesystem (預設為binary, 不做任何轉換)
character_set_results:返回給客戶端的字符集
character_set_server:資料庫伺服器的預設字符集
character_set_system:系統字符集,預設utf8。(用於資料庫的表、列和儲存在目錄表中函式的名字)
character_sets_dir:mysql字符集檔案的儲存路徑
2.解決亂碼設定:
如果自己的下面三項不為utf8可做如下處理
set character_set_client = ‘utf8’; set character_set_connection = ‘utf8’; set character_set_results = ‘utf8’;
或
set names utf8; //相當於上面三句
重啟後如果還沒解決問題,則進行如下配置......
二、在mysql的my.cnf的配置檔案中修改或新增下列(此檔案一般位置:/etc/my.cnf,以自己實際為主:/etc/xxxx/my.cnf):
1.有的版本沒有此檔案,需要自己建立一個。可查詢一個xxx.cnf 檔案,一般在/usr/share/....下,然後複製到etc資料夾下重新命名為my.cnf:
2.沒有my.cnf一般將/usr/share/mysql/my-default.cnf檔案複製來使用。5.7.18開始官方二進位制包中不再提供my-default.cnf檔案,直接修改人家提供的替代檔案/etc/mysql/mysql.conf.d就可以了,實在不行自己寫一個或者找別人複製個自己修改。
3.windows下在 MySQL 的安裝目錄下有一個my.ini配置檔案,通過修改這個配置檔案可以解決亂碼問題,如果已經是utf8可修改為GBK解決問題。
[client] default-character-set = utf8 [mysql] default-character-set = utf8 [mysqld] character_set_server = utf8
然後重啟資料庫即可.........
重要說明:修改後對現有的資料庫表是不起作用滴,對新建的才管用~~