Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

Unicode

 

Unicode

Unicode 是一種全球通用的字元編碼標準,用於交換並顯示主要的書寫語言。Unicode 涵括了美國、歐洲、中東、非洲、印度、亞洲以及太平洋地區的語系,但不包括歷史手稿和專門符號。Unicode 可用於交換、處理並顯示多國語系的文書,除了一般的專門符號和數學符號以外。Unicode 期望能夠解決對於不同國家的字元標準的多國語言處理等國際化問題。但目前並未完整支援所有的現代或古代的文字。

Unicode 字元集可以使用所有已知編碼的字元。Unicode 是繼 ASCII(American Standard Code for Information Interchange;美國資訊交換標準碼)字元集之後的字元集模型。Unicode 為每一個字元分配一個數字和名稱。字元編碼規範了字元的識別資訊及其數值(編碼位置),但未指明數值的位元表示法。16 位元數值(編碼值)是以十六進制數並加上前綴 U 來定義的,例如,U+0041 表示 A。這個數值的專用名稱是 LATIN CAPITAL LETTER A。

JavaScript 1.3 以前的版本並不支援 Unicode。

Unicode 與 ASCII 和 ISO 的相容性

Unicode 完全相容於國際標準 ISO/IEC 10646-1; 1993,屬於 ISO 10646 的子集。

若干編碼標準(包括 UTF-8、UTF-16、ISO UCS-2)是用來把 Unicode 表示為實際的位元。

Unicode 的 UTF-8 編碼可相容於 ASCII 字元,並已有許多程式支援。並且把前 128 個 Unicode 字元對應至 ASCII 字元,而擁有相同的位元組內碼。從 U+0020 到 U+007E 的 Unicode 字元完全等價於從 0x20 到 0x7E 的 ASCII 字元。與 ASCII 不同之處在於,還支援了使用 7 位元字元集的拉丁字母,UTF-8 為各個字元使用 1 到 4 個位元組(原作“octet”,即位元組、8 位元),借此容納數以百萬計的字元。另一種編碼標準,UTF-16,使用 2 個位元組表示 Unicode 字元。藉由 4 位元組的跳脫序列,可讓 UTF-16 表示 Unicode 的全部範圍。ISO UCS-2(Universal Character Set)使用 2 個位元組。

JavaScript 和 Navigator 支援 UTF-8/Unicode,意味著你只需在 JavaScript 程式中加上特別的技術,就可以使用非拉丁文、國際性、地域性的文字。Unicode 為多國文字的編碼提供了標準方法。由於 Unicode 的 UTF-8 編碼可相容於 ASCII,程式可以使用 ASCII 字元。你可以在 JavaScript 的註解、字串的字面表達、識別子、正則表達式中使用非 ASCII 的 Unicode 字元。

Unicode 的跳脫序列

你可以在字串的字面表達、正則表達式、識別子中使用 Unicode 跳脫序列。跳脫序列是由 6 個 ASCII 字元所構成︰\u 和 4 個十六進制數。例如,\u00A9 表示版權符號。在 JavaScript 中,所有的 Unicode 跳脫序列都會被解譯為單一字元。

以下代碼返回版權符號和字串 "Netscape Communications"。

x="\u00A9 Netscape Communications"

下表列出最常用的特殊字元及其 Unicode 值。

分類 Unicode 值 名稱 格式名稱
空白的值 \u0009 Tab <TAB>
  \u000B Vertical Tab <VT>
  \u000C Form Feed <FF>
  \u0020 Space <SP>
行終止的值 \u000A Line Feed <LF>
  \u000D Carriage Return <CR>
額外的 Unicode 跳脫序列的值 \u0008 Backspace <BS>
  \u0009 Horizontal Tab <HT>
  \u0022 Double Quote "
  \u0027 Single Quote '
  \u005C Backslash \

表 2.2: 特殊字元的 Unicode 值

JavaScript 使用的 Unicode 跳脫序列與 Java 不同。在 JavaScript 中,跳脫序列一開始不會被解譯為特殊字元。例如,字串裡的換行的跳脫序列,在給函數解譯以前,並不會使字串換行。JavaScript 會忽略所有使用在註解裡的跳脫序列。在 Java 中,如果跳脫序列使用在單行註解裡,就會被解譯為 Unicode 字元。對於字串的字面表達而言,Java 編譯器將首先解譯跳脫序列。例如,如果在 Java 中使用換行的跳脫字元(即 \u000A),就會使字串的字面表達換行。這在 Java 中會引起錯誤,因為換行不可以用在字串的字面表達。你必須給字串的字面表達的換行替換成 \n。在 JavaScript 中,也同樣使用 \n 作為跳脫序列。

在 JavaScript 檔案裡的 Unicode 字元

Gecko 的早期版本假設從 XUL 載入的 JavaScript 檔案使用的是 Latin-1 字元編碼。從 Gecko 1.8 開始,就從 XUL 檔案的編碼來推斷字元編碼。請參閱 在 XUL JavaScript 中的國際化字元 取得進一步資訊。

使用 Unicode 顯示字元

你可以使用 Unicode 顯示不同語言或專門符號的字元。為使字元正確的顯示,像 Mozilla Firefox 或 Netscape 這類客戶端也需要支援 Unicode。此外,客戶端也必須有可用的 Unicode 字型,客戶端平台也必須支援 Unicode。通常,Unicode 字型並不會顯示所有的 Unicode 字元。部分平台,如 Windows 95,只提供對 Unicode 的一部分支援。

要接收非 ASCII 字元的輸入,客戶端需要把傳送進來的輸入視為 Unicode。使用標準的增強式鍵盤,客戶端無法簡單的輸入由 Unicode 支援的額外字元。在某些時候,使用 Unicode 跳脫序列輸入 Unicode 字元是唯一的輸入方法。

有關 Unicode 的詳細資訊,參閱 Unicode 首頁 以及 1996 年由 Addison-Wesley 出版的 Unicode Standard, Version 2.0。

文件標籤與貢獻者

 此頁面的貢獻者: teoli, happysadman
 最近更新: teoli,