无窗口 RichEdit 控件无法输入表情符号

Posted

技术标签:

【中文标题】无窗口 RichEdit 控件无法输入表情符号【英文标题】:Windowless RichEdit Controls cannot enter emoji 【发布时间】:2019-01-30 05:52:27 【问题描述】:

我在使用Windowless RichEdit Controls(ITextHost,ITextServices)的时候发现如果输入了????等表情符号,就会变成□。

如果我使用CreateWindowEx 创建RICHEDIT50W,所有表情符号都是正确的。但是如果创建RICHEDIT20W,输入的emoji会变成□。

Windowless RichEdit 是否创建 RICHEDIT20W?如何使用 Windowless RichEdit 创建RICHEDIT50W

【问题讨论】:

表情符号在 Unicode 中具有高代码点,并且在大多数其他编码中可能缺少。在不知道细节的情况下,我怀疑RICHEDIT20W 没有使用任何类型的 Unicode 编码,或者使用的字体没有用于代码点的字形。我的阅读提示:Minimum about Encodings 我在 Google 上搜索了 richedit20w unicode 并发现(除其他外)以下可能感兴趣的内容:SO: Unicode RTF text in RichEdit。 你能在记事本中输入这个表情符号吗?某些 Windows 版本可能没有回退字体。 我进入记事本,表情正确。我使用 spy++,我的访客记事本使用 RICHEDIT50W。 如果我输入emoji会不正确,但是如果我使用EM_SETTEXTEX,emoji可以正确显示。(RICHEDIT20W) 【参考方案1】:

有同样的问题,通过将字体设置为“segeo UI Emoji”来解决

【讨论】:

以上是关于无窗口 RichEdit 控件无法输入表情符号的主要内容,如果未能解决你的问题,请参考以下文章

用DELPHIRxRichEdit控件实现类似QQ的表情输入方法

我怎样才能输入表情符号或输入任何东西

微信符号表情怎么打?

如何使用 javascript 检测表情符号

如何使用 javascript 检测表情符号

微信中发送的网址出现转义字符,该如何做