X11 Тип XM_NAME - это UTF-8, а не STRING_UTF8 - PullRequest
1 голос
/ 04 сентября 2011

Я смотрю на некоторый код X11, который использует XmbTextListToTextProperty для установки свойства WM_NAME со стилем кодирования 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. Все, что я до сих пор видел, говорит о том, что тип WM_NAME должен быть типа STRING, COMPOUND_STRING или UTF8_STRING.

Однако xprop сообщает UTF-8, а xwininfo сообщает 'имя в неподдерживаемой кодировке UTF-8'. Проверяя код, он действительно поддерживает UTF8_STRING, но не UTF-8.

Я в растерянности относительно того, откуда взялась эта UTF-8. Есть идеи?

1 Ответ

2 голосов
/ 08 сентября 2011

Похоже, что кроме стандартных типов STRING, COMPOUND_STRING и UTF8_STRING (последний является расширением XFree86), также допустимо любое многобайтовое кодирование.

При передаче XTextStyle в XmbTextListToTextProperty просто будет брать текущую кодировку из текущей локали. В локали en_US.UTF-8 это будет UTF-8. Чтобы получить стандартизированный (по XFree86) тип UTF8_STRING для свойства, нам нужно передать XUTF8StringStyle в XmbTextListToTextProperty вместо XTextStyle

...