我的母语是葡萄牙语,在 Cygwin 上运行的任何 Qt 应用程序中输入重音字符时遇到问题。
几乎总是,我输入的任何重音字母在屏幕上的结果都是该�
字符(Unicode 的替换角色,u+fffd)。
我认为问题与解释键盘输入有关,而不是与显示字符有关。更具体地说,这个问题似乎与组合按键序列的结果输入有关,例如用“dead-tilde plus”a
来获得“an” ã
,或者用“dead-acute plus”e
来获得“ é
;”。当我cat
在基于 Qt 的终端模拟器中使用在屏幕上显示包含重音字符的文件时,也没有问题,也没有从其他源复制/粘贴带有重音符号的文本,也没有使用单次击键产生的任何符号(例如ç
,在巴西 ABNT2 键盘上有自己的键,或者按住任意键时产生的任何其他非组合符号替代组修改键)。另外,如果我在终端上输入任何内容(控制台或者终端)直接进入hexdump -C
,很明显终端(或某些底层库)正在传递 3 字节的 UTF-8 序列"\xef\xbf\xbd"
,它对应于 u+fffd ,如上所述。
我还认为这是一个与 Qt 相关的问题,因为基于 GTK 的应用程序(例如 Gnome Terminal 或 LXTerminal)不会受到此问题的影响。
我已经尝试过的另一件事是在启动 Qt 应用程序和 X11 服务器本身之前更改区域设置,但它没有帮助。
所以我的问题是:
如何配置我的 Cygwin 环境,以便 Qt 理解重音字母(以及组合多个按键序列产生的任何其他 Unicode 符号)?
我是否必须安装和配置任何特定的 X11 输入库才能使 Qt 正常工作?我不熟悉用于处理输入的 Qt 依赖项,因此我们将不胜感激并记录任何帮助。
预先感谢您的任何帮助。