檢視編碼
show variables like 'character%';
修改編碼
mysql> set character_set_client = utf8 ;
mysql> set character_set_connection = utf8 ;
mysql> set character_set_database = utf8 ;
mysql> set character_set_results = utf8 ;
mysql> set character_set_server = utf8 ;
這種方式修改重啟之後就會復原,不推薦
修改配置檔案的編碼
修改/etc/my.cnf配置檔案,在[mysqld]下新增編碼配置,如下所示:
[mysqld]
character_set_server=utf8
init_connect='set names utf8'
[client]
default-character-set = utf8
如果找不到 /etc/my.conf 就去偷乙份過來
cp /usr/share/mysql/my-default.cnf /etc/
mv /etc/my-default.cnf /etc/my.cnf
這句話是用來修改資料庫表大小寫敏感問題,一般資料庫表明都使用小寫加下劃線鏈結,養成好習慣
echo lower_case_table_names=1 >>/etc/my.cnf
之前遇到的問題,mysql編碼設定都正常了,但是寫入的中文還是會轉換成亂碼
原因:使用pdo寫入的時候指定charset=utf8 失敗
本來是使用 dsn直接定義編碼格式
$mysqldsn="mysql:host=localhost;dbname=vip;charset=utf8";
但是當排除所有的可能,那麼就只剩下一開始就本以為設定正確的你了
換種方式重新設定字符集
$sql=" set names utf8 ";
$pdo->exec($sql);
測試發現 原因就在這裡 (一早上就被你給坑了)
很氣,但是也學到了,mysql編碼的流程
set names utf8 等同於設定
set character_set_client = utf8
set character_set_results = utf8
set character_set_connection = utf8
資訊輸入的編碼流程
輸入: client -> connection -> server;
輸出: server ->connection ->results;
每一次 -> 傳輸都會進行一次編碼的轉換(一共是三次,最終顯示會再 一次轉換)
以出現亂碼的輸出為例,server裡utf8的資料,傳入connection轉為latin1,傳入results轉為latin1,utf-8頁面又把results轉過來。如果兩種字符集不相容,比如latin1和utf8,轉化過程就為不可逆的,破壞性的。
mysql安裝簡書
設定mysql客戶端預設字符集 default character set utf8 mysqld 設定3306埠 port 3306 設定mysql的安裝目錄 basedir c web mysql 8.0.11 設定 mysql資料庫的資料的存放目錄,mysql 8 不需要以下配置,系統自己生成...
mysql簡書 mysql使用
mysql對大小寫不敏感 1.使用者管理 使用者的建立和授權 mysql 8.0.11 版本之後建立使用者方法如下 create user laowang localhost identified by 123456 或grant usage on to user01 localhost ident...
mysql中文亂碼子集 MySQL中文亂碼問題
中文亂碼問題在我們的mysql課程中常常出現,很多人在求助網路幫助的時候,往往達不到解決中文亂碼的目的,我這裡就我遇到過的一些問題進行彙總,並在以後不斷的新增新的問題!1 初窺門徑 眾所周知,出現中文亂碼問題一定是由字符集編碼問題引發的,但是很多時候我們都是對mysql配置檔案my.ini中的如下 ...