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

大嫂說,有你靠的(Unicode)

開發 前端
要知道java作為一門高級靜態語言,需要通過編譯后才能交由JVM加載使用的,在java文件編譯前還會經歷對源代碼進行詞法分析、語法分析、語義分析等等,最后生成class文件后,才能被JVM加載。而源文件中\u開頭的字符則是在這個過程中被解析并處理的。

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

最近看《狂飆》了吧,大嫂氣場十足!颯爽!

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符 設定了統一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。

簡介

  • 什么是字符集?

字符集當然是字符的集合,那么字符呢?你看到這篇文章的每個字母、中文或標點符號,就是一個個字符。

在計算器出現的早期,計算機僅支持的字符集為ASCII,其對應的字符就能夠滿足當時的使用需求,但隨著計算機的發展,在計算機上需要顯示的內容越來越復雜, 各個國家不同廠商都有自己的實現標準,然而有沒有誰能夠兼容世界所有的文字,因此產生了各種字符集,比如ASCII、ISO-8859-1、GB2312、BIG5等等。

  • 為什么要用字符編碼?

為了實現人和計算機間的交流,我們只認識字符,計算機只認識二進制數據,字符編碼即實現將字符轉換成機器碼進行存儲、使用的的一種技術手段。

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

字符集

字母、文字、數字、標點符號、圖形符號等字符的集合。表示了字符到二進制比特位的映射關系

ASCII

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

GB2312

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

字符集編碼

字符對應二進制字節表示后的編碼規則以及存儲形式。

  • ASCII
  • GB2312
  • UTF-8

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

unicode

  • 5層模型

Unicode編碼模型包含五層:

層次

名稱

作用

結果

描述

1

抽象字符表ACR

字符范圍



2

編號字符集CSS

字符編號

unicode字符集


3

字符編碼方式CEF

碼元序列

UTF-8、UTF-16、UTF-32


4

字符編碼方案CES

物理編碼

字節序列


5

傳輸編碼語法TES

網絡傳輸編碼

base64


  • Unicode字符集被劃分基本多文種平面、輔助平面,共17個平面(或17個區,編號為 0-16 ),每個平面有 216即65536個碼點, 共65536*17=1,114,112個碼點
  • 碼點空間范圍為U+000000 ~ U+10FFFF。
  • 每個碼點對應一個字符(有些屬于非字符或被保留碼點),但是一個字符可能有多個碼點(比如?)
  • unicode編碼有UTF8、UTF16、UTF32,分別最少需要1、2、4個字節來存儲一個字符編碼

unicode是字符的表現形式,而utf8是字符的存儲形式,或者說是存儲實現

unicode和utf8

下面是unicode與unf8的映射表,我們通過字符的unicode碼點(對應的16進制編碼)可以找到對應的utf-8格式并進行編碼轉換最終實現物理存儲。

unicode

utf-8

000000-00007F

0xxxxxxx

000080-0007FF

110xxxxx 10xxxxxx

000800-00FFFF

1110xxxx 10xxxxxx 10xxxxxx

010000-10FFFF

11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

那么unicode字符如何轉換成utf8編碼呢?

  • 比如“我”對應unicode為 \u6211,可以通過該網站查詢到
  • 轉換為二進制后:01100010 00010001
  • 根據上表的取值范圍可以確定為:000800-00FFFF - 1110xxxx 10xxxxxx 10xxxxxx
  • 通過轉換后結果為:11100110 10001000 10010001
  • 轉換為16進制為:E6 88 91,可以通過UE這樣的編輯工具,切換成16進制模式,可以看到“我”轉換后的編碼也是這個

有沒想過,像GBK為什么既可以是字符集又可以是字符編碼?其實將字符映射成對應的二進制數據時,我們是可以將其直接存儲到計算機,但unicode作為統一碼,基本攘括了目前常用的所有的字符,而這些字符不是都由兩個字節組成,比如前面說的?,那么如何確定一個字符到此從哪個字節開始呢?這里引用utf編碼就是為了實現這個,不僅減少了字符空間占比,同時提高了字符編碼效率。

BOM

BOM 是 Byte Order Mark 的縮寫。是UTF編碼方案里用于標識編碼的標準標記,在UTF-16里本來是FF FE,變成UTF-8就成了EF BB BF。這個標記是可選的, 因為UTF8字節沒有順序,所以它可以被用來檢測一個字節流是否是UTF-8編碼的。

Java中的unicode

在java中,我們通過\u開頭來表示unicode編碼,比如上面的\u6211,則表示的是“我”。

看下面這段代碼,你覺得會輸出什么?

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

當然是“Hello World”了,不要覺得//后面的代碼全部會被解析為注釋,前提是沒有換行符,然而\u000d恰好會被解釋為換行符,這樣其后面的代碼會作為新的一行進行解析, 這也是為什么會有這樣的輸出結果了


通過下面的命令可以對java源文件進行編譯:

javac ./Main.java -encoding utf-8

window環境默認編碼為gbk

要知道java作為一門高級靜態語言,需要通過編譯后才能交由JVM加載使用的,在java文件編譯前還會經歷對源代碼進行詞法分析、語法分析、語義分析等等,最后生成class文件后,才能被JVM加載。而源文件中\u開頭的字符則是在這個過程中被解析并處理的。

結束語

unicode作為世界統一編碼,經歷了很多變革,該篇主要通過unicode讓你對字符集以及字符編碼有一個簡單的認識。

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2022-08-01 08:36:09

upstream下游上游

2021-09-02 09:53:42

開發Redis配置

2013-06-07 10:32:32

程序員職業生涯

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

編程語言排行榜

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

人工智能機器人

2023-11-03 09:00:12

Unicode地域障礙空間

2023-04-27 07:48:53

redis數據庫AOF

2019-02-26 15:34:27

AI 數據人工智能

2015-11-10 10:12:42

重構系統.程序員

2021-01-04 14:21:21

人工智能機器學習語言

2012-05-24 10:29:54

編程程序員

2010-12-03 11:32:22

IT業

2021-12-23 15:05:46

Redis內存Java

2013-06-09 10:37:14

架構框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av香港经典三级级 在线 | 成人一区二区在线 | 在线观看欧美一区 | 国产成人精品免高潮在线观看 | 91精品一区| 久在线 | 欧美精品一区二区三区在线播放 | 日韩精品一区二区三区在线播放 | 欧美黄色网络 | www日韩欧美| 精品一区二区三区免费视频 | 久久伊| 男女精品久久 | 欧美精品99 | 激情欧美日韩一区二区 | 欧美在线 | 国产一区二区三区四区五区3d | 天天插天天干 | 免费观看av网站 | 亚洲精品视频在线播放 | 99精品欧美一区二区三区 | 国产精品日日夜夜 | 成人免费视频一区二区 | 欧美日批 | 不卡的av在线 | 精品一区二区久久久久久久网站 | 国产婷婷在线视频 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 7777在线视频 | 亚洲精品福利视频 | 国内精品久久久久久影视8 最新黄色在线观看 | 久久亚洲91 | 国产日韩欧美 | 日韩高清中文字幕 | 国产精品永久免费视频 | 精品免费视频一区二区 | 亚洲激情自拍偷拍 | 亚洲欧美日韩网站 | 91精品午夜窝窝看片 | 在线观看a视频 | 欧美高清性xxxxhdvideosex |