1

我正在查看一些XmbTextListToTextProperty用于设置WM_NAME属性的 X11 代码,带有 encoding style XTextStyle

http://tronche.com/gui/x/xlib/ICC/client-to-window-manager/XmbTextListToTextProperty.html建议XTextStyle意味着属性的类型/编码将取决于当前的语言环境。

我不知道如何解释http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.2.1,似乎它允许的类型WM_NAME取决于当前的语言环境。

我当前的语言环境是“en_US.UTF-8”。到目前为止,我所看到的一切都表明 of 的类型应该WM_NAME是 typeSTRING或.COMPOUND_STRINGUTF8_STRING

但是,xprop报告UTF-8xwininfo报告 'name in unsupported encoding UTF-8'。检查代码,确实支持UTF8_STRING但不支持UTF-8

我不知道这UTF-8是从哪里来的。有任何想法吗?

4

1 回答 1

2

看起来除了标准类型STRING和(后者是 XFree86 扩展)之外COMPOUND_STRINGUTF8_STRING任何多字节编码也是可以接受的。

当传递XTextStyle到时,XmbTextListToTextProperty将简单地从当前语言环境中获取当前编码。在en_US.UTF-8语言环境中,那将是UTF-8. 要获得属性的标准化(通过 XFree86)UTF8_STRING类型,我们需要传递XUTF8StringStyletoXmbTextListToTextProperty而不是XTextStyle

于 2011-09-07T20:04:24.030 回答