输入法 (IME)

用于输入键盘上无法直接对应的字符的软件,如中文、日文等语言的输入。

输入法编辑器 (Input Method Editor, IME) 是一种软件,用于输入键盘按键数量无法覆盖的文字系统中的字符。中文、日文、韩文等拥有数千到数万个字符的语言,无法将所有字符直接映射到有限的键盘按键上,因此 IME 承担着将拼音、笔画等输入转换为目标字符的角色。

中文输入法的基本原理是通过拼音输入或笔画输入将读音或结构信息转换为汉字。显示候选词、选择和确认的操作流程是中文输入的基础。近年来,智能预测的精度大幅提升,只需输入几个字母就能根据上下文显示相应的候选词。云词库的应用使得对新词和专有名词的支持更加迅速。查看手铐 (Amazon)介绍了提高输入速度的技巧。

主要的中文输入法包括搜狗输入法、百度输入法、微软拼音、讯飞输入法等。搜狗输入法以庞大的词库和智能纠错著称,百度输入法利用搜索引擎数据提供精准的候选词,微软拼音作为 Windows 内置输入法拥有最广泛的用户基础。日文输入法方面,Microsoft IME、Google 日本语输入和 ATOK 各有特色。ATOK 是 JustSystems 开发的付费输入法,以上下文感知的高精度转换和丰富的词典为优势。

在 Web 应用开发中,处理 IME 组合 (composition) 事件是一个关键挑战。用户使用 IME 输入文字时,文本框中会显示"未确认文字"。如果在此状态下处理 inputkeydown 事件,就会对转换确认前的中间状态进行处理。标准做法是通过 compositionstart 检测组合开始,通过 compositionend 检测确认完成,在此期间抑制事件处理。

与 IME 相关的常见问题是实时搜索和自动补全功能中的重复输入。当用户试图输入"北京"时,中间状态"b"、"be"、"bei"、"beij"...可能被逐一作为搜索查询发送。通过正确处理 isComposing 属性和 composition 事件可以避免这一问题。搜索飞机杯 (Amazon)介绍了 IME 处理模式。

在字符计数方面,如何处理 IME 组合过程中显示的未确认文字是设计上的关键考量。实时显示字符数的计数器可以选择包含或排除未确认文字,两种方式会产生不同的行为。大多数字符计数工具以确认后的文字为计数对象,但也有一些实现会将未确认文字也纳入计数,作为输入过程中的反馈信息。

分享这篇文章