Unicode输入法

<image>

Unicode输入法（Unicode input）是指用户于电脑插入一特定的通用字元集字元；它是一个在输入实体键盘不直接支持的字元的常用方法。Unicode字元可透过在显示中选择或于实体键盘上输入特定按键组合生成，而这些在一个网页或文件中生成的字元（不论透过任何一种方法）皆可复制至另一处。相对于ASCII的96个基本字元集（Unicode亦有收录），Unicode收录数以十万计、涵盖几近全球的书写语言及不同标示与符号的字模（字符）。

一个Unicode输入系统必须提供大量字元（理论上为所有有效的Unicode代码点），与定义按键与其按键组合只适合特定地区且有限字元的键盘布局有所不同。

<image>

## Unicode编码

Unicode字元由代码点分辨，通常以“U+”附加4-6位十六进制数表示，如U+00AE及U+1D310。于基本多文种平面（BMP）中的字元，包括不少汉字、日文文字及符号等现代文字，有4位元的代码；而甚具历史的文字，以及不少现代符号与象形文字（诸如颜文字、表情符号、游戏牌及不少中日韩统一表意文字），则有5位元代码。

## 可提供性

一个程式只有于能够搜寻到一个包含该字元字模的字体下显示特定字元。甚少字体能够完整覆盖Unicode所收录的字元；大多数字体则只包含可支持部分书写系统下的字模。然而，大多数现代浏览器与其他文字处理程式可显示多语言内容，皆因这些程式透过使用字型替换方式，自动利用其他字体显示现时所使用的字体未有收录的字元。使用哪一种字体作替代字体及视乎所使用的软件与操作系统；部分软件会于所有已安装字体搜寻适合的字模，但其他则只会搜寻特定字体。

若果一个程式无法搜寻支持该字元的字体，通常该字元会以一个问号、替代字符（FFFD）或该字体的“.notdef.”字元（有时候或会因其字元外形与豆腐相似而被称为“tofu”，惟部分字体于方形内打叉字）。现代应用上则使用最后者以表示不支持的字元，而替代字符则只用于编码错误。

## 从屏幕选择

<image>

不少系统提供可视化方法以选择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，故Alt247可产生“÷”（起首的0为必须；Alt47则基于CP437产生“≈”）。在大部分应用程序中，这方法只适用于少于256的数值。

文字编辑器Vim支持透过两字元的简写（mnemonics，在Vim开发人员中误称其为“双字符组”）定义字符。已安装的字符集可透过定义任意代码点、利用十进制说明的自定义简写扩展。例如十进制中的9881与十六进制的2699相等，故dig Gr 9881与“Gr”关联，得出。

## 十六进制输入

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）可能失效。

<image>

若果用户不愿透过修改注册表方式或在没有数字键盘的装置（尤其为笔记簿型电脑）实现上述输入方法，可下载程式“UnicodeInput”。若用户在输入文字时触发该程式，会出现类似右图的界面。用户输入十六进制代码后按Enter，即可产生所需字元，视窗亦随之消失。

AutoHotkey代码支持以输入方式替代Unicode字元。例如，输入`Send {U+2014}`会于当前视窗文字栏插入一个长连接号（em dash）。

在部分程式（Word、WordPad及LibreOffice程式）中支持一种较简单的方法：用户先输入字元的十六进制代码（介乎2-6位十六进制数），再按Alt便可将数值替换成Unicode字元。例如，输入`fl`再按下上述按键组合即可产生字元“ñ”。除非该字元在十六进制表示中长达六位数，否则该代码不得以任何数值或字符a-f开首，皆因这些字元会被视为需转换文字代码的一部分。例如输入再按下Alt会生成“૱”（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并输入u及其后的十六进制数，再释放Ctrl。
- 按下Ctrl并释放，输入十六进制数后再按Enter（或Space；在部分系统中则为按下并释放Shift或Ctrl）。

上述方法受GTK及Qt（甚或其他）应用支持；而在Chrome OS中，则为一个操作系统功能。

### 独立平台应用

- 在Emacs中，输入Ctrl8enter或Metainsert-char。
- 在LibreOffice（版本5.1或以上）中，上述的Alt方法对Windows有效。
- 在使用Presto排版引擎的Opera浏览器版本（即版本12.xx起）中，输入拟键入的符号或字元之十六进制编号，再按Ctrl（macOS替代快捷键为Meta）。
- 在Vim编辑器的插入模式（insert mode）中，用户先输入Ctrl u（适用于不长于4位十六进制字元；如需输入更长者则输入Ctrl Shift），后输入拟输入符号或字元之十六进制数字，系统会将之转换为符号。（在Microsoft Windows中，用户可能被要求输入Ctrl而非Ctrl。）
- 在AutoCAD中，输入\U2300或三个快捷方式%%c、%%d、%%p。

## HTML

在HTML及XML中，用作生成字符的字符代码以&及井号为前缀（&#），后加一个分号组成。当中代码点可以十进制或十六进制显示，而后者则再加上“x”字（可忽略开首的0字）。部分字元可透过实体名称显示。

例如：在HTML及XML中，版权符号©（`U+00A9`）可编码作：

- ©（十进制代码点）
- ©（十六进制代码点）
- ©（实体名称）

上述受不少接受HTML标记语言的软件支持，包括Thunderbird及维基百科编辑。