成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大嫂說(shuō),有你靠的(Unicode)

開(kāi)發(fā) 前端
要知道java作為一門(mén)高級(jí)靜態(tài)語(yǔ)言,需要通過(guò)編譯后才能交由JVM加載使用的,在java文件編譯前還會(huì)經(jīng)歷對(duì)源代碼進(jìn)行詞法分析、語(yǔ)法分析、語(yǔ)義分析等等,最后生成class文件后,才能被JVM加載。而源文件中\(zhòng)u開(kāi)頭的字符則是在這個(gè)過(guò)程中被解析并處理的。

哈嘍,大家好,我是指北君。

最近看《狂飆》了吧,大嫂氣場(chǎng)十足!颯爽!

Unicode(統(tǒng)一碼、萬(wàn)國(guó)碼、單一碼)是一種在計(jì)算機(jī)上使用的字符編碼。Unicode是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語(yǔ)言中的每個(gè)字符 設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,以滿(mǎn)足跨語(yǔ)言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求。

簡(jiǎn)介

  • 什么是字符集?

字符集當(dāng)然是字符的集合,那么字符呢?你看到這篇文章的每個(gè)字母、中文或標(biāo)點(diǎn)符號(hào),就是一個(gè)個(gè)字符。

在計(jì)算器出現(xiàn)的早期,計(jì)算機(jī)僅支持的字符集為ASCII,其對(duì)應(yīng)的字符就能夠滿(mǎn)足當(dāng)時(shí)的使用需求,但隨著計(jì)算機(jī)的發(fā)展,在計(jì)算機(jī)上需要顯示的內(nèi)容越來(lái)越復(fù)雜, 各個(gè)國(guó)家不同廠(chǎng)商都有自己的實(shí)現(xiàn)標(biāo)準(zhǔn),然而有沒(méi)有誰(shuí)能夠兼容世界所有的文字,因此產(chǎn)生了各種字符集,比如ASCII、ISO-8859-1、GB2312、BIG5等等。

  • 為什么要用字符編碼?

為了實(shí)現(xiàn)人和計(jì)算機(jī)間的交流,我們只認(rèn)識(shí)字符,計(jì)算機(jī)只認(rèn)識(shí)二進(jìn)制數(shù)據(jù),字符編碼即實(shí)現(xiàn)將字符轉(zhuǎn)換成機(jī)器碼進(jìn)行存儲(chǔ)、使用的的一種技術(shù)手段。

Unicode是字符集,而不是編碼方式。

字符集

字母、文字、數(shù)字、標(biāo)點(diǎn)符號(hào)、圖形符號(hào)等字符的集合。表示了字符到二進(jìn)制比特位的映射關(guān)系

ASCII

  • 技術(shù)特征:7位(bits)表示一個(gè)字符,共128字符,字符值從0到127,其中32到126是可打印字符。
  • 擴(kuò)展字符集:7位編碼的字符集只能支持128個(gè)字符,為了表示更多的歐洲常用字符對(duì)ASCII進(jìn)行了擴(kuò)展,ASCII擴(kuò)展字符集使用8位(bits)表示一個(gè)字符,共256字符。ASCII擴(kuò)展字符集:它是從ASCII字符集擴(kuò)充出來(lái)的,擴(kuò)充后的符號(hào)增加了表格符號(hào)、計(jì)算符號(hào)、希臘字母和特殊的拉丁符號(hào)。

GB2312

  • GB2312是中國(guó)國(guó)家標(biāo)準(zhǔn)的簡(jiǎn)體中文字符集。它所收錄的漢字已經(jīng)覆蓋99.75%的使用頻率,基本滿(mǎn)足了漢字的計(jì)算機(jī)處理需要。在中國(guó)大陸和新加坡獲廣泛使用。
  • 技術(shù)特征(1)分區(qū)表示:GB2312中對(duì)所收漢字進(jìn)行了“分區(qū)”處理,每區(qū)含有94個(gè)漢字/符號(hào)。這種表示方式也稱(chēng)為區(qū)位碼。各區(qū)包含的字符如下:01-09區(qū)為特殊符號(hào);16-55區(qū)為一級(jí)漢字,按拼音排序;56-87區(qū)為二級(jí)漢字,按部首/筆畫(huà)排序;10-15區(qū)及88-94區(qū)則未有編碼。(2)雙字節(jié)表示 兩個(gè)字節(jié)中前面的字節(jié)為第一字節(jié),后面的字節(jié)為第二字節(jié)。習(xí)慣上稱(chēng)第一字節(jié)為“高字節(jié)” ,而稱(chēng)第二字節(jié)為“低字節(jié)”。“高位字節(jié)”使用了0xA1-0xF7(把01-87區(qū)的區(qū)號(hào)加上0xA0),“低位字節(jié)”使用了0xA1-0xFE(把01-94加上0xA0)。
  • UnicodeUnicode是一種在計(jì)算機(jī)上使用的字符編碼。它為每種語(yǔ)言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,以滿(mǎn)足跨語(yǔ)言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求。Unicode 標(biāo)準(zhǔn)始終使用十六進(jìn)制數(shù)字,而且在書(shū)寫(xiě)時(shí)在前面加上前綴“U+”,例如字母“A”的編碼為 0x0041 和字符“€”的編碼為 0x20AC,所以“A”、“€”的編碼書(shū)寫(xiě)為“U+0041”、“U+20AC”。

字符集編碼

字符對(duì)應(yīng)二進(jìn)制字節(jié)表示后的編碼規(guī)則以及存儲(chǔ)形式。

  • ASCII
  • GB2312
  • UTF-8

ASCII、GB2312 是字符集也是字符編碼

unicode

  • 5層模型

Unicode編碼模型包含五層:

層次

名稱(chēng)

作用

結(jié)果

描述

1

抽象字符表ACR

字符范圍



2

編號(hào)字符集CSS

字符編號(hào)

unicode字符集


3

字符編碼方式CEF

碼元序列

UTF-8、UTF-16、UTF-32


4

字符編碼方案CES

物理編碼

字節(jié)序列


5

傳輸編碼語(yǔ)法TES

網(wǎng)絡(luò)傳輸編碼

base64


  • Unicode字符集被劃分基本多文種平面、輔助平面,共17個(gè)平面(或17個(gè)區(qū),編號(hào)為 0-16 ),每個(gè)平面有 216即65536個(gè)碼點(diǎn), 共65536*17=1,114,112個(gè)碼點(diǎn)
  • 碼點(diǎn)空間范圍為U+000000 ~ U+10FFFF。
  • 每個(gè)碼點(diǎn)對(duì)應(yīng)一個(gè)字符(有些屬于非字符或被保留碼點(diǎn)),但是一個(gè)字符可能有多個(gè)碼點(diǎn)(比如?)
  • unicode編碼有UTF8、UTF16、UTF32,分別最少需要1、2、4個(gè)字節(jié)來(lái)存儲(chǔ)一個(gè)字符編碼

unicode是字符的表現(xiàn)形式,而utf8是字符的存儲(chǔ)形式,或者說(shuō)是存儲(chǔ)實(shí)現(xiàn)

unicode和utf8

下面是unicode與unf8的映射表,我們通過(guò)字符的unicode碼點(diǎn)(對(duì)應(yīng)的16進(jìn)制編碼)可以找到對(duì)應(yīng)的utf-8格式并進(jìn)行編碼轉(zhuǎn)換最終實(shí)現(xiàn)物理存儲(chǔ)。

unicode

utf-8

000000-00007F

0xxxxxxx

000080-0007FF

110xxxxx 10xxxxxx

000800-00FFFF

1110xxxx 10xxxxxx 10xxxxxx

010000-10FFFF

11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

那么unicode字符如何轉(zhuǎn)換成utf8編碼呢?

  • 比如“我”對(duì)應(yīng)unicode為 \u6211,可以通過(guò)該網(wǎng)站查詢(xún)到
  • 轉(zhuǎn)換為二進(jìn)制后:01100010 00010001
  • 根據(jù)上表的取值范圍可以確定為:000800-00FFFF - 1110xxxx 10xxxxxx 10xxxxxx
  • 通過(guò)轉(zhuǎn)換后結(jié)果為:11100110 10001000 10010001
  • 轉(zhuǎn)換為16進(jìn)制為:E6 88 91,可以通過(guò)UE這樣的編輯工具,切換成16進(jìn)制模式,可以看到“我”轉(zhuǎn)換后的編碼也是這個(gè)

有沒(méi)想過(guò),像GBK為什么既可以是字符集又可以是字符編碼?其實(shí)將字符映射成對(duì)應(yīng)的二進(jìn)制數(shù)據(jù)時(shí),我們是可以將其直接存儲(chǔ)到計(jì)算機(jī),但unicode作為統(tǒng)一碼,基本攘括了目前常用的所有的字符,而這些字符不是都由兩個(gè)字節(jié)組成,比如前面說(shuō)的?,那么如何確定一個(gè)字符到此從哪個(gè)字節(jié)開(kāi)始呢?這里引用utf編碼就是為了實(shí)現(xiàn)這個(gè),不僅減少了字符空間占比,同時(shí)提高了字符編碼效率。

BOM

BOM 是 Byte Order Mark 的縮寫(xiě)。是UTF編碼方案里用于標(biāo)識(shí)編碼的標(biāo)準(zhǔn)標(biāo)記,在UTF-16里本來(lái)是FF FE,變成UTF-8就成了EF BB BF。這個(gè)標(biāo)記是可選的, 因?yàn)閁TF8字節(jié)沒(méi)有順序,所以它可以被用來(lái)檢測(cè)一個(gè)字節(jié)流是否是UTF-8編碼的。

Java中的unicode

在java中,我們通過(guò)\u開(kāi)頭來(lái)表示unicode編碼,比如上面的\u6211,則表示的是“我”。

看下面這段代碼,你覺(jué)得會(huì)輸出什么?

public static void main(String[] args) throws IOException {
//
// \u000d System.out.println("Hello World");
}

當(dāng)然是“Hello World”了,不要覺(jué)得//后面的代碼全部會(huì)被解析為注釋?zhuān)疤崾菦](méi)有換行符,然而\u000d恰好會(huì)被解釋為換行符,這樣其后面的代碼會(huì)作為新的一行進(jìn)行解析, 這也是為什么會(huì)有這樣的輸出結(jié)果了


通過(guò)下面的命令可以對(duì)java源文件進(jìn)行編譯:

javac ./Main.java -encoding utf-8

window環(huán)境默認(rèn)編碼為gbk

要知道java作為一門(mén)高級(jí)靜態(tài)語(yǔ)言,需要通過(guò)編譯后才能交由JVM加載使用的,在java文件編譯前還會(huì)經(jīng)歷對(duì)源代碼進(jìn)行詞法分析、語(yǔ)法分析、語(yǔ)義分析等等,最后生成class文件后,才能被JVM加載。而源文件中\(zhòng)u開(kāi)頭的字符則是在這個(gè)過(guò)程中被解析并處理的。

結(jié)束語(yǔ)

unicode作為世界統(tǒng)一編碼,經(jīng)歷了很多變革,該篇主要通過(guò)unicode讓你對(duì)字符集以及字符編碼有一個(gè)簡(jiǎn)單的認(rèn)識(shí)。

責(zé)任編輯:武曉燕 來(lái)源: Java技術(shù)指北
相關(guān)推薦

2022-08-01 08:36:09

upstream下游上游

2021-09-02 09:53:42

開(kāi)發(fā)Redis配置

2013-06-07 10:32:32

程序員職業(yè)生涯

2015-03-16 11:33:16

程序員代碼bug

2017-01-06 14:01:08

2021-09-01 09:44:16

Redis持久化配置

2016-04-11 11:39:16

編程語(yǔ)言排行榜

2018-06-01 16:06:29

PR靠譜Code Review

2018-09-13 14:00:12

白熊視頻CTO脫口秀

2018-03-14 14:48:57

人工智能

2020-12-02 15:36:25

人工智能機(jī)器人

2019-02-26 15:34:27

AI 數(shù)據(jù)人工智能

2023-04-27 07:48:53

redis數(shù)據(jù)庫(kù)AOF

2023-11-03 09:00:12

Unicode地域障礙空間

2015-11-10 10:12:42

重構(gòu)系統(tǒng).程序員

2021-01-04 14:21:21

人工智能機(jī)器學(xué)習(xí)語(yǔ)言

2012-05-24 10:29:54

編程程序員

2010-12-03 11:32:22

IT業(yè)

2021-12-23 15:05:46

Redis內(nèi)存Java

2012-11-22 11:35:15

打印機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久久久国产一区二区三区 | 久久久精品一区 | 成人国产在线视频 | 亚洲精品字幕 | 亚洲狠狠爱 | 一级毛片免费看 | 国产精品久久久久久久久久久久久 | 在线观看国产wwwa级羞羞视频 | 91精品国产综合久久精品 | 久久久久中文字幕 | 中文字幕一区二区三区四区五区 | 在线国产欧美 | 国产精品久久久99 | 亚洲欧美一区二区三区视频 | 亚洲影音先锋 | 欧美 日韩 中文 | 精品久久亚洲 | 午夜免费av | 天堂亚洲网 | 成人国产午夜在线观看 | av网站在线看 | 91精品国产自产精品男人的天堂 | 一区二区三区四区免费观看 | 久久国产免费看 | 一区二区在线 | 视频一区二区在线观看 | 国产日韩欧美一区 | 国产精品乱码一区二区三区 | 日本视频中文字幕 | 久久久av一区 | 久久精品久久久久久 | 日韩av电影在线观看 | 天天爽天天操 | 一二三四在线视频观看社区 | 另类二区 | 国产日韩欧美在线观看 | 一区二区三区亚洲 | 91天堂| 日韩成人在线视频 | 成人在线免费视频 | 日韩欧美中文 |