MySQL學習筆記(7) 中文資料問題

2021-08-20 12:28:20 字數 2529 閱讀 4883

中文資料問題本質是字符集問題

客戶端向伺服器插入中文資料:沒有成功

-- 插入資料(中文) set names gbk;

insert into my_student values(5,'itcast0005','張三','男');

原因:\xb7代表的是張三在當前編碼(字符集)下對應的二進位制編碼轉換成的十六進製制:兩個漢字=》四個位元組(gbk)

報錯:伺服器沒有識別對應的四個位元組:伺服器認為資料是utf8,乙個漢字有三個位元組:讀取三個位元組轉換成漢字(失敗),剩餘的再讀三個位元組(不夠):最終失敗。

所有的資料庫伺服器認為(表現)的一些特性都是通過伺服器端的變數來儲存:系統先讀取自己的變數,看看應該怎麼表現。

-- 檢視伺服器到底識別哪些字符集

show character set;

show variables like 'character_set%';

-- 檢視所有字符集

基本上:伺服器是萬能的,什麼字符集都支援

-- 既然服務 器識別這麼多:總有一種是伺服器預設的跟客戶端打交道的字符集

show variables like 'character_set%';

-- 檢視伺服器預設的對外處理的字符集

問題根源:客戶端資料只能是gbk,而伺服器認為是utf8:矛盾產生

解決方案:改變伺服器,預設的接收字符集為gbk;

set character_set_client = gbk;

-- 檢視伺服器預設的對外處理的字符集

show variables like 'character_set%';

-- 修改伺服器認為的客戶端資料的字符集為gbk

插入中文的效果

-- 插入資料中文

insert into my_student values(5,'itcast0005','張三','男');

檢視資料效果:依然是亂碼

但是事實伺服器給的資料卻是utf8,三個位元組乙個漢字:亂碼

解決方案:修改伺服器給客戶端的資料字符集為gbk

set character_set_results = gbk;

show variables like 'character_set%';

-- 修改伺服器給定資料的字符集為gbk

檢視資料效果

set 變數 = 值;修改只是會話級別(當前客戶端,當次連線有效;關閉失效)

設定伺服器對客戶端的字符集的認識:可以使用快捷方式:set names 字符集

connection連線層:是字符集轉變的中間者,如果統一了效率更高,不統一也每問題。

62256中文資料

62256中文資料 62256是32k的低功耗靜態ram儲存器.用p0和p2來擴充套件外部ram 就是用p0和p2與62256對應的管腳相連線 假設p2.7接wr,p2.6接rd,p2.5接cs,那麼就可以確定個外部ram的乙個位址,想往外部ram的乙個位址寫乙個位元組時,位址可以定為xbyte 0...

MySQL學習(一) 中文支援相關

使用mysql 時,建立了乙個名為student的資料庫,在其中建了個名為studentinfo的表,包括以下字段 學號,姓名,年齡,性別,家庭住址。其中的各個欄位名稱均用漢字表示。期間有兩個問題需要注意,都與漢字表示有關。1 欄位的宣告方式 各個欄位的定義方式如下 學號 int 4 姓名 nvar...

WinEdt學習筆記(一 中文編輯)

好像不論是哪一款軟體,只要是涉及到 部分,最喜歡一上來就hello,world!其實想想還蠻有道理的,因為程式嘛,真就是輸入輸出才是萬惡之源。那我們也來試試叭 documentclass begin hello,world end 接下來問題來了,我可以實現用中文輸出你好,世界!嘛?大不了試試唄!d...