編碼集與亂碼問題,中文編碼佔幾個位元組

2021-08-07 15:37:45 字數 2661 閱讀 2677

作用:表語英語及西歐語言。

位數:ascii是用7位表示的,能表示128個字元;其擴充套件使用8位表示,表示256個字元。

範圍:ascii從00到7f,擴充套件從00到ff。

作用:擴充套件ascii,表示西歐、希臘語等。

位數:8位, 範圍:從00到ff,相容ascii字符集。

作用:國家簡體中文字符集,相容ascii。

位數:使用2個位元組表示,能表示7445個符號,包括6763個漢字,幾乎覆蓋所有高頻率漢字。

範圍:高位元組從a1到f7, 低位元組從a1到fe。將高位元組和低位元組分別加上0xa0即可得到編碼。

作用:它是gb2312的擴充套件,加入對繁體字的支援,相容gb2312。

位數:使用2個位元組表示,可表示21886個字元。

範圍:高位元組從81到fe,低位元組從40到fe。

作用:為世界650種語言進行統一編碼,相容iso-8859-1。

位數:unicode字符集有多個編碼方式,分別是utf-8,utf-16和utf-32。

作用:統一繁體字編碼。

位數:使用2個位元組表示,表示13053個漢字。

範圍:高位元組從a1到f9,低位元組從40到7e,a1到fe。

作用:它解決了中文、日文、朝鮮語等的編碼,相容gbk。

位數:它採用變位元組表示(1 ascii,2,4位元組)。可表示27484個文字。

範圍:1位元組從00到7f; 2位元組高位元組從81到fe,低位元組從40到7e和80到fe;4位元組第一三位元組從81到fe,第二四位元組從30到39。

作用:國際標準 iso 10646 定義了通用字符集 (universal character set)。它是與unicode同類的組織,ucs-2和unicode相容。

位數:它有ucs-2和ucs-4兩種格式,分別是2位元組和4位元組。

範圍:目前,ucs-4只是在ucs-2前面加了0x0000。

按所表示的文字分類

語言字符集

正式名稱

英語、西歐語ascii

iso-8859-1

mbcs 多位元組

簡體中文

gb2312

mbcs 多位元組

正體中文

big5

mbcs 多位元組

簡繁中文

gbkmbcs 多位元組

中文、日文及朝鮮語

gb18030

mbcs 多位元組

各國語言

unicode,ucs

dbcs 寬位元組

要求:要知道當前內容的編碼格式和要轉換為的編碼格式:

示例:

string username = request.

getparameter

("username").

trim()

; string password = request.

getparameter

("password").

trim()

;

獲取到的string型別變數:username和password的編碼格式為:iso-8859-1

如何將他們轉換成utf-8編碼,不要出現亂碼,**如下:

string parameter = request.

getparameter

("username");

//獲取到引數對應的二進位制數

byte

temp = parameter.

getbytes

("iso-8859-1");

//通過對應的二進位制數 手動編碼成utf-8的字串

string param =

newstring

(temp,

"utf-8"

);

原理:

相同的內容在計算機中的二進位制編碼是一樣的,所以在不同編碼間內容傳遞時,要想不出現亂碼,先將該內容按其原編碼轉換為二進位制序列。然後再將這個二進位制序列按照要轉換的編碼進行翻譯,就不會出現亂碼。

出現的亂碼形式的含義:

??????    --->    代表字元編碼不匹配造成

师龙 ---> 代表沒有該編碼方式

英文本母和中文漢字在不同字符集編碼下的位元組數:

英文本母:

位元組數 : 1;編碼:gb2312

位元組數 : 1;編碼:gbk

位元組數 : 1;編碼:gb18030

位元組數 : 1;編碼:iso-8859-1

位元組數 : 1;編碼:utf-8

位元組數 : 4;編碼:utf-16

位元組數 : 2;編碼:utf-16be

位元組數 : 2;編碼:utf-16le

中文漢字:

位元組數 : 2;編碼:gb2312

位元組數 : 2;編碼:gbk

位元組數 : 2;編碼:gb18030

位元組數 : 1;編碼:iso-8859-1

位元組數 : 3;編碼:utf-8

位元組數 : 4;編碼:utf-16

位元組數 : 2;編碼:utf-16be

位元組數 : 2;編碼:utf-16le

先從字元編碼講起。

Mark Ajax引數中文編碼亂碼問題

link ajax不支援多種字符集,其預設的字符集是utf 8,所以在應用ajax技術的程式中應及時進行編碼轉換,否則對於程式中出現的中文字元將變成亂碼。一般在以下兩種情況下將產生亂碼。1.傳送路徑的引數中包括中文,在伺服器端接收引數值時產生亂碼 將資料提交到伺服器有兩種方法 一種是使用get方法提...

php 轉換中文亂碼,php中文編碼轉換問題

php中文編碼轉換的方法 1 使用iconv函式,為 string iconv string in string out string str 2 使用 mb convert encoding 函式。php中文編碼轉換的方法 一 iconvstring iconv string in charset...

python實戰之編碼問題 中文!永遠的痛

編碼的思維圖譜 也就是說檔案沒有編碼之說,事實上都是按二進位制格式儲存在硬碟中的。不過在寫入讀取時須使用相應的編碼進行處理,以便作業系統配合相關軟體 字型,繪製到螢幕中給人看。所以關鍵問題是得知道原先這些字串資料是使用什麼編碼來編譯的!可是在 unicode之前都是使用類似對比表的形式來組織編碼的,...