奇思妙想 · 2024年 4月 20日 0

文本框输入法输入英文字符wm或者中文"我们", 程序内部是什么编码?

49 次浏览

以Windows为例,写了一个C#程序,新建一个MyTextBox类继承系统的TextBox, 重写PreProcessMessage方法截获键盘WM_CHAR事件, 用msg.WParam & Keys.KeyCode将键盘消息转换成Keycode,获取程序获取的真正数据,并反推回编码。代码项目:vs2019/test_ime/ime - c_demo - Minisoft (gitee.com)

  • 输入英文字符wm: 程序得到的KeyCode是ASCII码'w'和'm'的数值。
  • 输入中文"我们"(注意不是输入法显示"我们"的时刻,是确认输入到文本框的时刻),程序得到的KeyCode是25105和20204,分别对应十六进制0x6211和0x4EEC,是UTF-16LE编码。