跳转到内容

Unicode输入法

本页使用了标题或全文手工转换
维基百科,自由的百科全书
Unicode标志

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

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

图为KCharSelect字符映射工具,正显示Unicode数学运算子英语Mathematical operators and symbols in Unicode子集

Unicode编码

[编辑]

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

可提供性

[编辑]

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

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

从屏幕选择

[编辑]
GNOME中的字符映射表

不少系统提供可视化方法以选择Unicode字元。ISO/IEC 14755英语ISO/IEC 14755标准将之定义为一种“屏幕选择输入方法”(screen-selection entry method)[4]

Microsoft Windows自Windows XP起于消费者层面提供一个Unicode版本的字符映射表程式,惟只包含于基本多文种平面(BMP)中的字元。用户可透过Unicode字元名称搜索字元,而列表亦可只限于一特定的代码块。[5]

市面上亦提供同类的第三方进阶工具(当中知名的免费软体计有BabelMap,该程式支持所有Unicode字元)[6]

在大多数Linux桌面环境中,亦有提供如gucharmap英语gucharmap(GNOME)或kcharselect英语kcharselect(KDE)的同等工具[7]

十进制输入

[编辑]

Microsoft Windows支持使用Alt码,透过于数字键盘输入的十进制数字转化为部份Unicode代码点。例如,除号的代码点U+00F7及F7等同于十进制下的247,故Alt+0247可产生“÷”(起首的0为必须;Alt+247则基于CP437产生“≈”)。在大部份应用程式中,这方法只适用于少于256的数值。

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

十六进制输入

[编辑]

ISO/IEC 14755英语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代码。[2]以此方法输入五位长的十六进制代码(如U+1F937)可能失效。

UnicodeInput之视窗

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

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

在部份程式(WordWordPadLibreOffice程式)中支持一种较简单的方法:用户先输入字元的十六进制代码(介乎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键。[10]在基本多文种平面(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;在部份系统中则为按下并释放⇧ ShiftCtrl)。[11]

上述方法受GTK及Qt(甚或其他)应用支持;而在Chrome OS中,则为一个操作系统功能[11]

独立平台应用

[编辑]
  • Emacs中,输入Ctrl+x8↵ EnterMeta+xinsert-char
  • LibreOffice(版本5.1或以上)中,上述的Alt+X方法对Windows有效。
  • 在使用Presto排版引擎的Opera浏览器版本(即版本12.xx起)中,输入拟键入的符号或字元之十六进制编号,再按Ctrl+⇧ Shift+xmacOS替代快捷键为Meta+⇧ Shift++x)。
  • Vim编辑器的插入模式(insert mode)中,用户先输入Ctrl+V u(适用于不长于4位十六进制字元;如需输入更长者则输入Ctrl+V ⇧ Shift+U),后输入拟输入符号或字元之十六进制数字,系统会将之转换为符号。(在Microsoft Windows中,用户可能被要求输入Ctrl+Q而非Ctrl+V[12]
  • AutoCAD中,输入\U2300或三个快捷方式%%c%%d%%p

HTML

[编辑]

HTMLXML中,用作生成字符的字符代码以&井号为前缀(&#),后加一个分号(;)组成。当中代码点可以十进制十六进制显示,而后者则再加上“x”字(可忽略开首的0字)。部份字元可透过实体名称显示。

例如:在HTML及XML中,版权符号©(U+00A9)可编码作:

  • ©(十进制代码点)
  • ©(十六进制代码点)
  • ©(实体名称)

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

参见

[编辑]

参考资料

[编辑]
  1. ^ Lafontaine, Sylvain. Unicode vs ASCII difference and benefits. MSDN. 2012-02-17 [2014-02-28]. (原始内容存档于2022-01-21) (美国英语). 
  2. ^ 2.0 2.1 Andrew Marcuse. How to enter Unicode characters in Microsoft Windows. [2012-09-13]. (原始内容存档于2022-05-15) (美国英语). 
  3. ^ What symbol is the square box shown for non-representable Unicode characters?. Quora. [2020-08-02] (美国英语). 
  4. ^ ISO/IEC 14755:1997 Information technology -- Input methods to enter characters from the repertoire of ISO/IEC 10646 with a keyboard or other input device. ISO. [2017-10-14]. (原始内容存档于2021-06-19) (美国英语). 
  5. ^ Andy Rathbone. How to Insert Special Characters with Windows 7 Character Map. dummies.com. [2018-12-05]. (原始内容存档于2021-06-15) (美国英语). 
  6. ^ Ancient Signs: The Alphabet & the Origins of Writing. books.google.com. [2018-12-05] (美国英语). [失效链接]
  7. ^ Peck, Akkana. Mastering Characters Sets in Linux (Weird Characters, part 2). LinuxPlanet. 2009-11-25 [2018-12-05]. (原始内容存档于2019-05-10) (美国英语). 
  8. ^ Opris, Elena. UnicodeInput Review. Softpedia. [2018-11-28]. (原始内容存档于2021-11-22) (美国英语). 
  9. ^ Send Keys & Clicks. AutoHotkey Foundation LLC. Copyright © 2003–2018. [2020-08-02]. (原始内容存档于2022-05-14) (英语). 
  10. ^ Antony. typing special and accented characters. MacCentre701. 2006-12-20 [2020-08-02]. (原始内容存档于2008-03-09) (英语). 
  11. ^ 11.0 11.1 Jack, Busch. Type Special Characters with a Chromebook (Accents, Symbols, Em Dashes). groovypost.com. 2018-04-20 [2020-02-28]. (原始内容存档于2021-12-04) (美国英语). 
  12. ^ Vim documentation: gui_w32. [2020-08-02]. (原始内容存档于2021-09-09) (美国英语).