首頁  >  文章  >  web前端  >  每個 JavaScript 開發者都該懂的 Unicode

每個 JavaScript 開發者都該懂的 Unicode

高洛峰
高洛峰原創
2016-10-15 11:52:361071瀏覽

目錄:

1 Unicode背後的想法

2 Unicode基本概念

2.1 字元與程式碼點

2.2 Unicode平面

2.3 碼元嗎353%

2.2 Unicode平面

2.3 碼元組合中的Unicode

3.1 轉義序列

3.2 字串比較

3.1 轉義序列

3.2 字串比較

3.3 字串長度

3.4 字元定位

3.5 正則符合

:你是怎麼閱讀並理解這篇文章的?答案很簡單,因為你明白這些字以及由字組成的單字的意思。

那你又是如何明白這些字的意思的呢?答案也很簡單,因為你(讀者)和我(作者)對於這些(呈現在螢幕上的)圖形與漢字(即意義)之間的連結有著相同的認知。

對計算機來說這個原理也差不多,只有一點不同:計算機不懂這些字(字母)的含義,只是將其理解為特定的比特序列。

讓我們設想一個情境:電腦User1傳送一封訊息給電腦User2'hello'。

計算機並不知道這些字母的意思。所以電腦User1將訊息'hello'轉換為一串數字序列0x68 0x65 0x6C 0x6C 0x6F,每個字母對應一個數字:h對應0x68, e對應0x65,等等。

接著將這些數字傳送給電腦User2。

計算機User2收到數字序列0x68 0x65 0x6C 0x6C 0x6F後,使用同一套字母與數字的對應關係重建訊息內容,'hello'就能正確地顯示出來了。

不同計算機之間對字母與數字之間對應關係的協議就是Unicode進行標準化的結果。

根據Unicode,h是一個名為LATIN SMALL LETTER H的抽象字元。這個抽象字元對應數字0x68,也就是一個標記為U+0068的碼點。這些概念將在下一章中說明。

Unicode的作用就是提供一個抽象字元清單(字元集),並為每個字元分配一個獨特的識別碼點(編碼字元集)。

2. Unicode基本概念

www.unicode.org網站提到:

Unicode為每個字元分配一個專有的數字

不分平台

不分程式

code 是不分詞一個世界通用的字元集,它定義了全世界大部分書寫體系的字元集,並為每個字元分配了一個獨一無二的數字(代碼點)。

Unicode囊括了大部分現代語言、標點符號、附加符號(變音符)、數學符號、技術符號、箭頭和表情符號等。

Unicode第一版1.0於1991年10月發布,包含7161個字元。最新版9.0(2016年6月發布)則提供了128172個字元的編碼。

Unicode的通用性與開放性解決了過去一直存在的一個問題:供應商各自實現不同的字元集和編碼規則,很難處理。

建立一個支援所有字元集和編碼規則的應用是十分複雜的。更不用說你選用的編碼可能不支援所有你需要的語言。

如果你覺得Unicode很難,那就想想如果沒有它程式會更難。

我還記得從前隨機選擇所需的字元集和編碼規則去讀取檔案內容的時候。全靠人品啊!

2.1 字元與代碼點

抽像字元(即文字字元)是用來組織、管理或表現文字資料的資訊單位。

Unicode中的字元是一個抽象概念。每個抽象字元都有一個對應的名稱,例如LATIN SMALL LETTER A。該抽象字符的圖像表現形式(glyph)是a。 (譯者註:glyph即圖像字符)

代碼點是指被分配給某個抽像字符的數字

代碼點以U+

的形式表示,U+是代表Unicode的前綴,而

是一個16進制數。例如U+0041和U+2603都是代碼點。

代碼點的取值範圍是從U+0000到U+10FFFF。

記住代碼點就是一個簡單的數字。思考有關Unicode的問題時要記住這一點。

程式碼點就好像陣列元素的下標。

Unicode的神奇之處就在於將程式碼點與抽象字元關聯起來。例如U+0041對應的抽象字元名為LATIN CAPITAL LETTER A (表現為A),而U+2603對應的抽象字元名為SNOWMAN(表現為☃)

注意,並非所有的程式碼點都有對應的抽象字元。可用的代碼點有114112個,但分配了抽象字元的只有128237個。

2.2 Unicode平面

平面是指從U+n0000到U+nFFFF的區間,也就是65536(1000016)個連續的Unicode代碼點,n的值範圍是從016到1016。

這些平面將Unicode代碼點分成17個大小相等的集合:

平面0包含從U+0000到U+FFFF的代碼點

平面1包含從U+**1**0000到U+** 1**FFFF的代碼點

...

平面16包含從U+**10**0000到U+**10**FFFF的代碼點

基本多文種平面

平面0比較特殊,稱為基本多文種平面或簡稱BMP。它包含了大多數現代語言的字符 (基本拉丁字母, 西里爾字母, 希臘字母等)和大量的符號。

如上文所述,基本多文種平面的代碼點取值範圍是從U+0000到U+FFFF,最多可以有4位16進位數字。

大多時候開發者處理的都是BMP中的字元。它包含了大多數情況下的必需字元。

BMP中的一些字元:

e對應碼點U+0065 抽象字元名稱: LATIN SMALL LETTER E

|對應碼點U+007C 抽象字元名稱: VERTICAL BAR

|對應碼點U+007C 抽象字元名稱: VERTICAL字元名: BLACK SQUARE

☂對應碼點U+2602 抽象字元名稱: UMBRELLA

☂對應碼點U+2602 抽象字元名稱: UMBRELLA

星光平面

BMP之後的16個平面(平面1,平面2,…,平面16)稱為星光平面輔助平面。

星光平面的代碼點稱為星光代碼點。這些代碼點的取值範圍是從U+10000到U+10FFFF。

星光代碼點可能會有5位或6位16進位數字:U+ddddd或U+dddddd。

來看幾個星光平面裡的字符:

🎜

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn