输入unicode键时是UTF-8 / UTF-16还是什么?

时间:2011-11-02 07:02:14

标签: windows unicode

使用Windows(XP为参数)当你有一个外语时,例如阿拉伯语,他们在键盘上键入一个键,你有一个编辑器,将该代码存储在一个字符串中,然后编码为UTF-8 / UTF-16等?

为什么我要问的是我正在研究如何将unicode字符串转换为lua脚本。 Lua可以将utf-8存储在一个字符串中。那么如何在键盘/驱动程序进入ide或ide之前执行编码。

请原谅问题的模糊性。一旦我有一个unicode字符串,那么很明显,这就是编码进入的方式,我不确定,特别是对于非美英键盘,我只有一个美英键盘。

TIA

2 个答案:

答案 0 :(得分:5)

键盘与此无关。例如,您可以使用美国键盘键入日语。键盘只是将键码发送到操作系统。操作系统根据选择的键盘布局解释这些键代码。它可以简单地将这些代码转换为屏幕上的字符(该字符取决于您选择的键盘布局),或者它可以调用IME来输入复杂语言,然后在屏幕上产生一些字符。到目前为止,这些角色最有可能在幕后以UTF-16处理,但这根本不需要关注你。如果您正在键入文本编辑器,则可以最终指定要保存文件的编码。这将是源代码文件的最终编码。

答案 1 :(得分:3)

Windows发送WM_CHAR消息,告诉您已按下输入键。关于它的MSDN Library article非常清楚:

  

WM_CHAR消息使用Unicode转换格式(UTF)-16。

如果你需要在utf8中编码,那么你需要翻译它。使用WideCharToMultiByte(),并将CodePage参数设置为CP_UTF8。