基于Java字符編碼的使用詳解
1,什么是字符編碼?
字符(Character)是文字與符號(hào)的總稱,包括文字、圖形符號(hào)、數(shù)學(xué)符號(hào)等。一組抽象字符的集合就是字符集(Charset)。字符集的出現(xiàn)是為了信息進(jìn)行傳播儲(chǔ)存提供方便。目前常用到字符集有:ASCII,ISO 8859-1,Unicode,GB2312
2,各種編碼集有哪些特點(diǎn)?
ASCII:
ASCII是基于拉丁字母的一套電腦編碼系統(tǒng)。
包含內(nèi)容:控制字符(回車(chē),退格,換行鍵),可顯示式字符。
技術(shù)特征:7位(bits)表示一個(gè)字符,共128字符
不足之處:只能表示英語(yǔ),想西歐,東亞和拉美地區(qū)的語(yǔ)言符號(hào)無(wú)法表示。
ISO 8859-1:
ISO 8859-1,正式編號(hào)為ISO/IEC 8859-1:1998,又稱Latin-1或“西歐語(yǔ)言”,是國(guó)際標(biāo)準(zhǔn)化組織內(nèi)ISO/IEC 8859的第一個(gè)8位字符集。
它以ASCII為基礎(chǔ),在空置的0xA0-0xFF的范圍內(nèi),加入96個(gè)字母及符號(hào),藉以供使用附加符號(hào)的拉丁字母語(yǔ)言使用。曾推出過(guò) ISO 8859-1:1987 版。
包含內(nèi)容:ASCII編碼包含的,部分西歐使用的語(yǔ)言。
技術(shù)特征:8位表示一個(gè)字符。
Unicode:
Unicode字符集編碼是Universal Multiple-Octet Coded Character Set 通用多八位編碼字符集的簡(jiǎn)稱,是由一個(gè)名為 Unicode 學(xué)術(shù)學(xué)會(huì)(Unicode Consortium)的機(jī)構(gòu)制訂的字符編碼系統(tǒng),支持現(xiàn)今世界各種不同語(yǔ)言的書(shū)面文本的交換、處理及顯示。該編碼于1990年開(kāi)始研發(fā),1994年正式公布,最新版本是2005年3月31日的Unicode 4.1.0。
技術(shù)特征:16位編碼,每個(gè)字符占用2個(gè)字節(jié)。一個(gè)字符的Unicode編碼是確定的。但是在實(shí)際傳輸過(guò)程中,由于不同系統(tǒng)平臺(tái)的設(shè)計(jì)不一定一致,以及出于節(jié)省空間的目的,對(duì)Unicode編碼的實(shí)現(xiàn)方式有所不同。Unicode的實(shí)現(xiàn)方式稱為Unicode轉(zhuǎn)換格式(Unicode Transformation Format,簡(jiǎn)稱為UTF)。如果一個(gè)7位的ASCII字符的Unicode文件,在傳輸過(guò)程中如果使用2個(gè)字節(jié)的原Unicode編碼傳輸會(huì)造成比較大的浪費(fèi)。對(duì)于這種情況,可以使用UTF-8編碼,這是一種變長(zhǎng)編碼,它將基本7位ASCII字符仍用7位編碼表示,占用一個(gè)字節(jié)(首位補(bǔ)0)。而遇到與其他Unicode字符混合的情況,將按一定算法轉(zhuǎn)換,每個(gè)字符使用1-3個(gè)字節(jié)編碼,并利用首位為0或1進(jìn)行識(shí)別。
GB2312:
包含內(nèi)容:6763個(gè)漢字,其中一級(jí)漢字3755個(gè),二級(jí)漢字3008個(gè);同時(shí)收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語(yǔ)西里爾字母在內(nèi)的682個(gè)字符。
技術(shù)特征:每個(gè)漢字及符號(hào)以兩個(gè)字節(jié)來(lái)表示。第一個(gè)字節(jié)稱為“高位字節(jié)”,第二個(gè)字節(jié)稱為“低位字節(jié)”。“高位字節(jié)”使用了0xA1-0xF7,“低位字節(jié)”使用了0xA1-0xFE0xA0)。 由于一級(jí)漢字從16區(qū)起始,漢字區(qū)的“高位字節(jié)”的范圍是0xB0-0xF7,“低位字節(jié)”的范圍是0xA1-0xFE,占用的碼位是72*94=6768。其中有5個(gè)空位是D7FA-D7FE。
相關(guān)文章
JNI實(shí)現(xiàn)最簡(jiǎn)單的JAVA調(diào)用C/C++代碼
這篇文章主要介紹了JNI實(shí)現(xiàn)最簡(jiǎn)單的JAVA調(diào)用C/C++代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
SpringBoot中MapStruct實(shí)現(xiàn)優(yōu)雅的數(shù)據(jù)復(fù)制
本文主要介紹了SpringBoot中MapStruct實(shí)現(xiàn)優(yōu)雅的數(shù)據(jù)復(fù)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
Spring?boot2.0?實(shí)現(xiàn)日志集成的方法(3)
這篇文章主要介紹了Spring?boot2.0?實(shí)現(xiàn)日志集成的方法,基于上一篇將日志信息根據(jù)類(lèi)別輸出到不同的文件中,這篇文章將通過(guò)日志來(lái)監(jiān)控用戶的操作行為、請(qǐng)求的耗時(shí)情況,針對(duì)耗時(shí)久的請(qǐng)求進(jìn)行性能分析,提升系統(tǒng)性能,需要的小伙伴可以參考一下2022-04-04
springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法
本文主要介紹了springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
java實(shí)現(xiàn)消息隊(duì)列的兩種方式(小結(jié))
本文主要介紹了兩種java實(shí)現(xiàn)消息隊(duì)列的方式,利用Spring消息模板發(fā)送消息和Apache ActiveMQ官方實(shí)例發(fā)送消息,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
SwiftUI中級(jí)List如何添加新內(nèi)容(2020年教程)
這篇文章主要介紹了SwiftUI中級(jí)List如何添加新內(nèi)容,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

