關於base64的中文編碼?

時間 2021-06-10 00:26:10

1樓:basic13

先問是不是,再問為什麼。

並非所有的中文的base64編碼都是以5開頭的,比如「耀」以6開頭,還有「」以4開頭。

不過呢,中文大部分是以5開頭的。

要了解為什麼會如此,可以先從base64編碼的原理說起。Base64大致上是在將原始資料按照3位元組的24個bit切分,每6個bit一組,每組前兩位補0。然後從64個字元中找對應的字元來匹配,5這個字元對應的數字是57,對應的二進位制就是0011 1001,去掉開頭補的0,就是111001,只要你的資料串以這6個位元開頭,base64就會以5開頭。

那麼什麼樣的資料會以5開頭呢,其實就是***到11100111嘛,也就是E4到E7,中文漢字的編碼範圍基本是在\u4e00-\u9fa5之間,轉成UTF-8實際是E4 B8 80到E9 BE A5,第乙個位元組從E4到E9,所以大部分漢字,或者說常用漢字都在E4到E7範圍內,因此你會覺得漢字總是以5開頭。其實從\u8000開始,漢字的base64就以6開頭了。

乙個漢字的base64之旅

然後還有一些奇葩漢字比如「」,編碼是\u3400,以4開頭,這就是另乙個故事了。

關於base64 的指令碼?

Base64編碼是基於64個字元 字元分別為 的編碼方式,網路上最常見的用於傳輸8Bit位元組碼的編碼方式之一,Base64就是一種基於64個可列印字元來表示二進位制資料的方法。3 8 4 6 Base64編碼表 前方為基礎。其轉換方法為 base64的編碼都是按字串長度,以每3個8bit的字元為一...

如何用通俗易懂的語言解釋base64

Intopass base64只是一種用文字表示二進位制的方法,如果你的介面支援原生的二進位製流,那根本不需要base64,因為直接上二進位製流更省空間。比如說乙個4位元組整數,如果是二進位製流那就是4位元組。如果是轉化成文字,表示成二進位制文字時是32個字元,每個字元用ASCII編碼是1位元組,所...

python3如何解決讀取中文檔案的編碼問題?

今天遇到同樣的問題,也是在讀取檔案時。將同一py指令碼在自己虛擬機器上執行,成功執行。放到伺服器上就報錯。UnicodeDecodeError ascii codec can t decode byte 0xe6 in position 0 ordinal not in range 128 1 使用...