X11 XM_NAME имеет тип "UTF-8", а не STRING_UTF8

Я смотрю на некоторый код 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, кажется, это позволяет тип 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 ответ

Решение

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

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

Другие вопросы по тегам