常見字符集介紹
字符集基礎(chǔ)知識(shí):
計(jì)算機(jī)底層不可以直接存儲(chǔ)字符的。
計(jì)算機(jī)中底層只能存儲(chǔ)二進(jìn)制(0、1) 。
二進(jìn)制是可以轉(zhuǎn)換成十進(jìn)制的。
結(jié)論:計(jì)算機(jī)底層可以表示成十進(jìn)制編號(hào)。計(jì)算機(jī)可以給人類字符進(jìn)行編號(hào)存儲(chǔ),這套編號(hào)規(guī)則就是字符集。
ASCII字符集:
ASCII(American Standard Code for Information Interchange,美國(guó)信息交換標(biāo)準(zhǔn)代碼):包括了數(shù)字、英文、符號(hào)。
ASCII使用1個(gè)字節(jié)存儲(chǔ)一個(gè)字符,一個(gè)字節(jié)是8位,首位為0,總共可以表示128個(gè)字符信息,對(duì)于英文,數(shù)字來說是夠用的。
GBK:
window系統(tǒng)默認(rèn)的碼表。兼容ASCII碼表,也包含了幾萬個(gè)漢字,并支持繁體漢字以及部分日韓文字。
注意:GBK是中國(guó)的碼表,一個(gè)中文以兩個(gè)字節(jié)的形式存儲(chǔ)。但不包含世界上所有國(guó)家的文字。
Unicode碼表:
?unicode(又稱統(tǒng)一碼、萬國(guó)碼、單一碼)是計(jì)算機(jī)科學(xué)領(lǐng)域里的一項(xiàng)業(yè)界字符編碼標(biāo)準(zhǔn)。
容納世界上大多數(shù)國(guó)家的所有常見文字和符號(hào)。
Unicode會(huì)先通過UTF-8,UTF-16,以及 UTF-32編碼成二進(jìn)制后再存儲(chǔ)到計(jì)算機(jī),其中最為常見的就是UTF-8。
注意
Unicode是萬國(guó)碼,以UTF-8編碼后一個(gè)中文一般以三個(gè)字節(jié)的形式存儲(chǔ)。
UTF-8也要兼容ASCII編碼表。
技術(shù)人員都應(yīng)該使用UTF-8的字符集編碼。
編碼前和編碼后的字符集需要一致,否則會(huì)出現(xiàn)中文亂碼。
漢字存儲(chǔ)和展示過程解析
總結(jié)
1、字符串常見的字符底層組成是什么樣的?
英文和數(shù)字等在任何國(guó)家的字符集中都占1個(gè)字節(jié)。
GBK字符中一個(gè)中文字符占2個(gè)字節(jié)。
UTF-8編碼中一個(gè)中文1般占3個(gè)字節(jié)。
2、編碼前的字符集和編碼好的字符集有什么要求?
必須一致,否則會(huì)出現(xiàn)中文字符亂碼。
英文和數(shù)字在任何國(guó)家的編碼中都不會(huì)亂碼?。
字符集的編碼、解碼操作
String編碼
byte[] getBytes?()?使用平臺(tái)的默認(rèn)字符集將該 String編碼為一系列字節(jié),將結(jié)果存儲(chǔ)到新的字節(jié)數(shù)組中。
byte[] getBytes?(String charsetName)
String解碼
String?(byte[] bytes)?通過使用平臺(tái)的默認(rèn)字符集解碼指定的字節(jié)數(shù)組來構(gòu)造新的 String。文章來源:http://www.zghlxwxcb.cn/news/detail-731911.html
String?(byte[] bytes, String charsetName)?文章來源地址http://www.zghlxwxcb.cn/news/detail-731911.html
案例
public class Test {
public static void main(String[] args) throws Exception {
// 1、編碼:把文字轉(zhuǎn)換成字節(jié)(使用指定的編碼)
String name = "abc我愛你中國(guó)";
// byte[] bytes = name.getBytes(); // 以當(dāng)前代碼默認(rèn)字符集進(jìn)行編碼 (UTF-8)
byte[] bytes = name.getBytes("GBK"); // 指定編碼
System.out.println(bytes.length);
System.out.println(Arrays.toString(bytes));
// 2、解碼:把字節(jié)轉(zhuǎn)換成對(duì)應(yīng)的中文形式(編碼前 和 編碼后的字符集必須一致,否則亂碼 )
// String rs = new String(bytes); // 默認(rèn)的UTF-8
String rs = new String(bytes, "GBK"); // 指定GBK解碼
System.out.println(rs);
}
}
到了這里,關(guān)于字符集詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!