输入法 (IME)

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

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

中文输入法的基本原理是通过拼音输入或笔画输入将读音或结构信息转换为汉字。显示候选词、选择和确认的操作流程是中文输入的基础。许多输入法具备智能预测功能,只需输入几个字母就能根据上下文显示相应的候选词。部分输入法还会把输入的读音发送到服务器并从云词库获取候选词,使新词和专有名词无需等待本地词库更新即可出现在候选词中。

主要的中文输入法包括搜狗输入法、百度输入法、微软拼音、讯飞输入法等。搜狗输入法以词库规模和智能纠错为卖点,百度输入法利用搜索引擎数据生成候选词,微软拼音作为 Windows 内置输入法无需额外安装即可使用,是默认的选择。日文输入法方面,Microsoft IME、Google 日本语输入和 ATOK 各有特色。ATOK 是 JustSystems 开发的付费输入法,以结合上下文的转换和分领域词典为卖点。

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

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

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

分享这篇文章