成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL數據庫字符編碼總結--數據傳輸編碼

數據庫 MySQL
前面分享了mysql數據庫字符編碼中的數據存儲編碼,今天主要介紹下數據傳輸編碼方面的內容,看完后大家應該對mysql數據庫字符編碼的策略很清楚了。

概述

前面分享了mysql數據庫字符編碼中的數據存儲編碼,今天主要介紹下數據傳輸編碼方面的內容,看完后大家應該對mysql數據庫字符編碼的策略很清楚了。

01、名詞解釋

1、character_set_client:客戶端數據解析、編碼的字符集。

2、character_set_connection:連接層字符集。

3、character_set_server:服務器內部操作字符集。

4、character_set_results:查詢結果字符集。

5、character_set_database:當前數據庫的字符集。

6、character_set_system:系統源數據(字段名等)字符集。

注:

1、還有以collation_開頭的同上面對應的變量,用來描述字符序。

2、服務端編碼、解析時,是按照前一環節的編碼進行解析的,按照各自的字符集進行編碼的。

3、character_set_server是mysql數據庫內存的操作字符集。如果創建數據庫時,沒有指定數據庫的字符集,則使用character_set_server的字符集作為默認字符集;如果創建表時,沒有指定表的字符集,則使用character_set_database的字符集作為默認字符集;如果在創建字段時,沒有指定字段的字符集,則使用表的字符集作為默認字符集。

4、set names gbk;等同于同時設置character_set_client,character_set_connection,character_set_results這三個字符集。

MySQL的客戶端可以分為兩種:一種就是用C語言寫的官方客戶端——MySQL命令程序;一種就是平常程序員使用JDBC等connector API寫成的客戶端。這里以***種做分析,分成windows和Linux兩個層面。

mysql數據庫字符編碼總結--數據傳輸編碼

02、Windows客戶端

MySQL命令程序在Windows和Linux系統中關于字符編碼處理的部分并不等效,下圖是Windows系統的客戶端字符編碼轉換邏輯:

mysql數據庫字符編碼總結--數據傳輸編碼

其中的三個character變量存在于服務器上,而charset_info存在于客戶端。

當客戶端啟動連接到服務器時,客戶端將根據配置參數設置charset_info為指定編碼,同時通知服務器讓服務器把三個character變量設置為相同編碼。

Windows客戶端數據傳輸流程:

1)客戶端從控制臺標準輸入讀取一行命令文本,其編碼為操作系統編碼;

2)客戶端將命令從系統編碼轉碼為客戶端charset_info變量設定的編碼;

3)客戶端將命令文本發送給服務器;

4)服務器把收到的文本解碼為character_set_client編碼,這個編碼通常與客戶端charset_info一致;

5)服務器把命令文本轉碼為character_set_connection;

6)服務器執行命令,產生結果;

7)將結果轉碼為character_set_results發送給客戶端;

8)客戶端把收到的結果解碼為charset_info編碼,這個編碼通常與character_set_results一致;

9)客戶端將結果轉碼為操作系統編碼,輸出到控制臺標準輸出。

由于在Windows平臺上MySQL程序在讀取控制臺時使用了Unicode Console Read API,所以程序從控制臺獲取的原始字符串實際上是UTF16編碼,所以這里的“操作系統編碼”并不是Windows通常的GBK,而應該看做UTF16。

03、Linux客戶端

下圖是Linux系統中的MySQL客戶端程序字符編碼轉換邏輯:

mysql數據庫字符編碼總結--數據傳輸編碼

它與Windows版的不同之處就在于,它并不把來自終端標準輸入的操作系統編碼字符串強制轉換為charset_info編碼,也不會把輸出到終端的charset_info編碼結果字符串強制轉換為操作系統編碼。

也就是說,Linux平臺的MySQL程序這時候會會忽略charset_info變量。當然,這樣一來Linux客戶端的數據傳輸流程就比Windows客戶端對應地少幾步。

其實字符集出現亂碼的地方***可能在兩個地方,character_set_client和character_set_results。如果這兩個地方的編碼個客戶端編碼不一致會亂碼。數據有可能存都存不進去。***老老實實不要亂設置character_set_client這些值。如果能保持所有的都是utf8,那肯定沒問題。

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2020-06-12 07:50:15

大數據

2024-08-05 09:31:00

MySQLDTS數據

2010-04-07 14:54:38

2023-04-12 16:20:00

同步數據異步數據傳輸

2020-08-13 08:34:10

MySQL數據DTS

2010-10-28 15:56:21

ORACLE數據庫設置

2010-07-13 15:55:12

FTP數據傳輸模式

2013-11-26 15:51:45

Android編程藍牙數據傳輸

2015-10-14 09:44:55

TCP網絡協議數據傳輸

2021-10-08 08:37:38

數據傳輸數據調用網絡協議

2010-05-11 18:14:52

Mysql數據庫編碼

2009-12-08 11:17:41

WCF雙向通信

2009-07-07 16:46:33

數據傳輸銅纜結構

2021-06-09 11:28:06

加密數據Jsencrypt

2021-12-14 11:01:44

TCPUDP網絡協議

2011-03-02 11:23:48

2019-09-06 09:11:36

以太網數據二層交換

2017-05-04 12:48:18

WOT網易NDC

2022-03-30 15:06:25

數據傳輸Harmony源碼分析

2023-07-07 11:26:08

物聯網5G光傳輸
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99精品久久久国产一区二区三 | 国产在线观| 亚洲精品黑人 | 精品久久久久久亚洲综合网 | 日日操夜夜操天天操 | 国产激情精品一区二区三区 | 四虎成人免费视频 | 久久一本 | 综合激情网 | 一级在线观看 | 女人牲交视频一级毛片 | 国产午夜在线 | 国产黄色网址在线观看 | 久久久久国色av免费观看性色 | 欧美精品在线一区二区三区 | 亚洲国产成人精品女人 | 日本二区 | 成人亚洲性情网站www在线观看 | 成年人网站在线观看视频 | www.一级毛片 | 国产伦精品一区二区三区高清 | 午夜精品导航 | 国产高清一区 | 综合久久亚洲 | 日本在线免费看最新的电影 | 在线中文字幕av | 亚洲欧美激情视频 | 欧美成人在线免费 | 色久影院 | 亚洲成人免费 | 欧美国产日韩一区二区三区 | 日韩免费视频 | 久久久久久久久国产成人免费 | 中文字幕高清一区 | 91精品国产色综合久久 | 在线视频亚洲 | 国产美女特级嫩嫩嫩bbb片 | 91精品国产91久久久久久吃药 | 日韩一级| 麻豆av片| 国产精品美女久久久久久不卡 |