utf8編碼對照表 為什么Linux系統(tǒng)默認(rèn)使用utf8編碼?
為什么Linux系統(tǒng)默認(rèn)使用utf8編碼?GBK是微軟為簡體中文開發(fā)的本地代碼,被工信部起訴。每個國家或地區(qū)都會制定和使用自己的地方代碼,一些企業(yè)也會制定某個國家或地區(qū)的地方代碼(GBK是微軟制定的簡
為什么Linux系統(tǒng)默認(rèn)使用utf8編碼?
GBK是微軟為簡體中文開發(fā)的本地代碼,被工信部起訴。每個國家或地區(qū)都會制定和使用自己的地方代碼,一些企業(yè)也會制定某個國家或地區(qū)的地方代碼(GBK是微軟制定的簡體中文代碼)。當(dāng)打開用本地代碼編寫的文件而不指定使用的本地代碼時,可能會看到亂碼。
為了解決本地編碼混亂的問題,Unicode和ISO這兩個組織已經(jīng)開始開發(fā)一種字符編碼系統(tǒng),可以容納不同國家的字符而不發(fā)生沖突。目前,這兩個組織相互承認(rèn),并有兼容的編碼。
目前,許多計算機(jī)系統(tǒng)使用2字節(jié)(16位整數(shù))或4字節(jié)(32位整數(shù))統(tǒng)一編碼。統(tǒng)一編碼只描述每個字符的編碼,但沒有解釋如何將編碼存儲在存儲介質(zhì)上。
目前,計算機(jī)系統(tǒng)中有前高字節(jié)和前低字節(jié)兩種整數(shù)存儲模式,因此前高字節(jié)的數(shù)據(jù)在前低字節(jié)的系統(tǒng)中會出現(xiàn)異常,反之亦然。同時,我們知道很多編程系統(tǒng)在處理字符串時,都會把值為0的字節(jié)作為字符串的結(jié)尾,不管是前高字節(jié)還是前低字節(jié),字符串中都會出現(xiàn)大量值為0的字節(jié),因此傳統(tǒng)的字符串處理功能無法使用。
為了解決統(tǒng)一編碼的存儲和與現(xiàn)有字符串處理函數(shù)兼容的問題,引入了utf8編碼。這種編碼規(guī)定了統(tǒng)一編碼的存儲方式,并確保值為0的字節(jié)仍然用作字符串的結(jié)尾,這樣就可以繼續(xù)使用原來的字符串處理函數(shù),而不需要開發(fā)新的集合。
當(dāng)然,utf8也有一個問題,那就是它是可變長度編碼。統(tǒng)一編碼的字符可以編碼為一個字節(jié)、兩個字節(jié)、三個字節(jié)、四個字節(jié)(版本1)或六個字節(jié)(版本2)。
什么是UTF-8編碼?
GBK是在國家標(biāo)準(zhǔn)GB2312的基礎(chǔ)上擴(kuò)展后與GB2312兼容的標(biāo)準(zhǔn)。GBK碼是專門用來解決中文雙字節(jié)編碼的。中文和英文都是雙字節(jié)的。UTF-8編碼是一種用于國際字符的多字節(jié)編碼。它用8位(一個字節(jié))表示英語,用24位(三個字節(jié))表示漢語。對于英文字符較多的論壇,使用UTF-8來節(jié)省空間。此外,如果外國人訪問您的GBK網(wǎng)站,他們需要下載中文語言包支持。訪問UTF-8編碼的網(wǎng)頁沒有這個問題??梢灾苯釉L問。GBK包含所有漢字;UTF-8包含世界各國所需的所有字符。
utf8和utf16編碼是什么標(biāo)準(zhǔn)?
UTF-8采用字節(jié)作為編碼單元,不存在字節(jié)順序問題。
Utf-16采用兩個字節(jié)作為編碼單位。在解釋utf-16文本之前,
我們應(yīng)該首先弄清楚每個編碼單元的字節(jié)順序。
例如,“Kui”的Unicode代碼是594e,“B”的Unicode代碼是4e59。如果我們收到utf-16字節(jié)流“594e”