mysql中文亂碼 簡書 MySQL中文亂碼

2021-10-19 18:56:39 字數 1547 閱讀 8103

檢視編碼

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中的如下 ...