Unicode输入法

**Unicode 輸入法**（英語：Unicode input）是指使用者於電腦插入一特定的通用字元集字元；它是一個在輸入實體鍵盤不直接支援的字元的常用方法。Unicode 字元可透過在顯示中選擇或於實體鍵盤上輸入特定按鍵組合生成，而這些在一個網頁或檔案中生成的字元（不論透過任何一種方法）皆可複製至另一處。相對於 ASCII 的 96 個基本字元集（Unicode 亦有收錄），Unicode 收錄數以十萬計、涵蓋幾近全球的書寫語言及不同標示與符號的字模（字元）。

一個 Unicode 輸入系統必須提供大量字元（理論上為所有有效的 Unicode 代碼點），與定義按鍵與其按鍵組合只適合特定地區且有限字元的鍵盤配置有所不同。

## Unicode 編碼

Unicode 字元由代碼點分辨，通常以「U+」附加 4-6 位十六進制數表示，如 U+00AE 及 U+1D310。於基本多文種平面（BMP）中的字元，包括不少漢字、日文文字及符號等現代文字，有 4 位元的代碼；而甚具歷史的文字，以及不少現代符號與象形文字（諸如顏文字、表情符號、遊戲牌及不少中日韓統一表意文字），則有 5 位元代碼。

## 可提供性

一個程式只有於能夠搜尋到一個包含該字元字模的字體下顯示特定字元。甚少字體能夠完整覆蓋 Unicode 所收錄的字元；大多數字體則只包含可支援部份書寫系統下的字模。然而，大多數現代瀏覽器與其他文字處理程式可顯示多語言內容，皆因這些程式透過使用字型替換方式，自動利用其他字體顯示現時所使用的字體未有收錄的字元。使用哪一種字體作替代字體及視乎所使用的軟體與操作系統；部份軟體會於所有已安裝字體搜尋適合的字模，但其他則只會搜尋特定字體。

若果一個程式無法搜尋支援該字元的字體，通常該字元會以一個問號、替代字元（U+FFFD � ）或該字體的「**.notdef.**」字元（有時候或會因其字元外形與豆腐相似而被稱為「tofu」，惟部份字體於方形內打叉字）。現代應用上則使用最後者以表示不支援的字元，而替代字元則只用於編碼錯誤。

## 從螢幕選擇

不少系統提供可視化方法以選擇 Unicode 字元。ISO/IEC 14755 標準將之定義為一種「螢幕選擇輸入方法」（screen-selection entry method）。

Microsoft Windows 自 Windows XP 起於消費者層面提供一個 Unicode 版本的字元對應表程式，惟只包含於基本多文種平面（BMP）中的字元。使用者可透過 Unicode 字元名稱搜尋字元，而列表亦可只限於一特定的代碼塊。

市面上亦提供同類的第三方進階工具（當中知名的免費軟體計有 BabelMap，該程式支援所有 Unicode 字元）。

在大多數 Linux 桌面環境中，亦有提供如 gucharmap（GNOME）或 kcharselect（KDE）的同等工具。

## 十進制輸入

Microsoft Windows 支援使用 Alt 碼，透過於數字鍵盤輸入的十進制數字轉化為部份 Unicode 代碼點。例如，除號的代碼點 U+00F7 及 F7 等同於十進制下的 247，故 `Alt`+`0``2``4``7` 可產生「÷」（起首的 0 為必須；`Alt`+`2``4``7` 則基於 CP437 產生「≈」）。在大部份應用程式中，這方法只適用於少於 256 的數值。

文字編輯器 Vim 支援透過兩字元的簡寫（mnemonics，在 Vim 開發人員中誤稱其為「雙字元組」）定義字元。已安裝的字元集可透過定義任意代碼點、利用十進制說明的自訂簡寫擴展。例如十進制中的 9881 與十六進制的 2699 相等，故 `dig Gr 9881` 與「Gr」關聯，得出 U+2699 ⚙ GEAR。

## 十六進制輸入

ISO/IEC 14755 第 5.1 條描述一種「簡單方法」（Basic method），當中。大多數現代電腦系統有一些可類比該描述的方法，惟部份只支援最多四位數值（意味只能支援基本多文種平面）。

### Microsoft Windows

使用者可透過於註冊表登錄器中，搜尋 `HKEY_CURRENT_USER\Control Panel\Input Method` 目錄並添加名為 `EnableHexNumpad` 的字串（REG\_SZ）值，將數值設為 `1` 即可啟用十六進制 Unicode 輸入法。該操作需使用者再次登入系統後方能生效（在 Windows Vista 或以前版本中，使用者需將電腦重新啟動，方能啟用輸入法）。

功能啟用後，使用者可透過先按下 `Alt`，並於數字鍵盤鍵入 `+`，再輸入十六進制代碼（透過數字鍵盤輸入 0-9 及／或字母鍵輸入 A-F），最後釋放 `Alt` 鍵即可輸入 Unicode 代碼。以此方法輸入五位長的十六進制代碼（如 `U+1F937`）可能失效。

若果使用者不願透過修改註冊表方式或在沒有數字鍵盤的裝置（尤其為筆記簿型電腦）實現上述輸入方法，可下載程式「UnicodeInput」。若使用者在輸入文字時觸發該程式，會出現類似右圖的介面。使用者輸入十六進制代碼後按 `↵ Enter`，即可產生所需字元，視窗亦隨之消失。

AutoHotkey 代碼支援以輸入方式替代 Unicode 字元。例如，輸入 `Send {U+2014}` 會於當前視窗文字欄插入一個長連接號（em dash）。

在部份程式（Word、WordPad 及 LibreOffice 程式）中支援一種較簡單的方法：使用者先輸入字元的十六進制代碼（介乎 2-6 位十六進制數），再按 `Alt`+`X` 便可將數值替換成 Unicode 字元。例如，輸入 `fl` 再按下上述按鍵組合即可產生字元「ñ」。除非該字元在十六進制表示中長達六位數，否則該代碼不得以任何數值或字元 a-f 開首，皆因這些字元會被視為需轉換文字代碼的一部份。例如輸入 `afl` 再按下 `Alt`+`X` 會生成「૱」（U+0AF1），但輸入 `a0000f1` 則會生成「añ」。

### macOS

Unicode 的十六進制輸入必須啟用。在 Mac OS 8.5 以後版本中，使用者可以選擇「Unicode Hex Input」鍵盤佈局；於 OS X Yosemite (10.10) 版本中，則可透過「鍵盤」→「輸入來源」添加。

透過按下 `⌥ Option`，使用者可輸入四位十六進制數的 Unicode 代碼點即可顯示對應的字元；此時便可釋放 `⌥ Option` 鍵。在基本多文種平面（BMP，Basic Multilingual Plane）以外的字元即使超出 Unicode 十六進制的四位元輸入機制，但使用者可透過代理對（surrogate pairs）方式實現輸入：在按下 `⌥ Option` 鍵的同時先後鍵入首組代理對、`+` 鍵、第二組代理對，最後才釋放 `⌥ Option` 鍵。

### X11（Linux 及其他包括 Chrome OS 的類 Unix 系統）

在不少應用程式中，可透過一個或多個方法以直接輸入 Unicode 字元：

* 按住 `Ctrl`+`⇧ Shift` 並輸入 `u` 及其後的十六進制數，再釋放 `Ctrl`+`⇧ Shift`。
* 按下 `Ctrl`+`⇧ Shift`+`u` 並釋放，輸入十六進制數後再按 `↵ Enter`（或 `Space`；在部份系統中則為按下並釋放 `⇧ Shift` 或 `Ctrl`）。

上述方法受 GTK 及 Qt（甚或其他）應用支援；而在 Chrome OS 中，則為一個操作系統功能。

### 獨立平台應用

* 在 Emacs 中，輸入 `Ctrl`+`x``8``↵ Enter` 或 `Meta`+`x``insert-char`。
* 在 LibreOffice（版本 5.1 或以上）中，上述的 `Alt`+`X` 方法對 Windows 有效。
* 在使用 Presto 排版引擎的 Opera 瀏覽器版本（即版本 12.xx 起）中，輸入擬鍵入的符號或字元之十六進制編號，再按 `Ctrl`+`⇧ Shift`+`x`（macOS 替代快捷鍵為 `Meta`+`⇧ Shift`++`x`）。
* 在 Vim 編輯器的插入模式（insert mode）中，使用者先輸入 `Ctrl`+`V` `u`（適用於不長於 4 位元十六進制字元；如需輸入更長者則輸入 `Ctrl`+`V` `⇧ Shift`+`U`），後輸入擬輸入符號或字元之十六進制數字，系統會將之轉換為符號。（在 Microsoft Windows 中，使用者可能被要求輸入 `Ctrl`+`Q` 而非 `Ctrl`+`V`。）
* 在 AutoCAD 中，輸入 `\U2300` 或三個捷徑 `%%c`、`%%d`、`%%p`。

## HTML

在 HTML 及 XML 中，用作生成字元的字元代碼以 & 及井號為前綴（&#），後加一個分號（;）組成。當中代碼點可以十進位或十六進位顯示，而後者則再加上「x」字（可忽略開首的 0 字）。部份字元可透過實體名稱顯示。

**例如：**在 HTML 及 XML 中，著作權符號 ©（`U+00A9`）可編碼作：

* `&#169;`（十進制代碼點）
* `&#xa9;`（十六進制代碼點）
* `&copy;`（實體名稱）

上述受不少接受 HTML 標記語言的軟體支援，包括 Thunderbird 及維基百科編輯。

## 參見

* ASCII
* 雙字元組 (編程)
* AltGr 鍵
* 多功能鍵

## 參考資料