Проблема кодировки терминальных символов BitchX

Проблема кодировки терминальных символов BitchX

Я побежалСукаXна трех разных ОС Linux, потому что на двух из них (Linux OpenSUSE 11.4 и BackTrack 5 R1) при использовании yakuake/konsole (OpenSUSE) и terminator/tilda (BT 5 R1) я получил этот странный � (вопросительный знак).

Однако на PuppyLinux Lucid 528 с RoxTerm символ отображается так, как и должен (это греческий символ "fi"). Теперь, как на SUSE, так и на BT, я проверил значение $LC_CTYPE, и оно такое же, как в Puppy Linux (а именно en_US, то есть без кодировки utf-8).

Я экспериментировал и на SUSE, и на BT с разными кодировками символов (из настроек терминала), я заметил изменения, но текст все равно иногда искажался, вместо вопросительного знака я получал какие-то странные непонятные «u» (в Puppy они всегда отображаются правильно).

Что может быть причиной этой раздражающей проблемы?
Что может отличаться и как я могу проверить разницу?

решение1

Здесь происходит несколько вещей.

Можете ли вы сначала убедиться, что это LC_CTYPE=en_USдействительно означает «без utf-8»?

Функция nl_langinfoможет помочь, например:

$ python
>>> import locale
>>> locale.setlocale(locale.LC_CTYPE, 'en_US')
'en_US'
>>> locale.nl_langinfo(locale.CODESET)
'ISO-8859-1'

Во-вторых, было бы полезно попробовать изменить только одну переменную за раз. Например, если RoxTerm работает в PuppyLinux, будет ли он работать в OpenSUSE и/или BackTrack? И можете ли вы также сказать, какую версию BitchXвы используете, если это имеет значение?

Наконец, IRC на самом деле не предоставляет никакой информации о кодировке символов, поэтому сервер и все пользователи на канале должны согласовать кодировку символов. Я думаю, что в наши дни большинство пользователей используют UTF-8, так что, может быть, вам стоит попробовать изменить настройки на UTF-8?


ОБНОВЛЯТЬ

Вы сказали, что BitchX не поддерживает UTF-8.

Тогда, я думаю, у вас возникнут проблемы в общении с другими пользователями.

Но если все остальные говорят по-гречески, а также используют BitchX, то, возможно, вам стоит использоватьНабор греческих символов ISO-8859-7.

В моей системе единственные две локали, которые изначально поддерживают ISO-8859-7, — это греческие языки, например el_GR.iso88597.

Запустите locale -a, чтобы просмотреть полный список доступных вариантов, и выберите тот, который включает этот набор символов.

решение2

Вопросительный знак в ромбе, скорее всего, означает, что ваша клиентская программа принимает символ и передает его в движок отображения (я прав, что bitchX — это только терминальная программа?), но терминал не может его отобразить. Так что, скорее всего, проблема в конфигурации терминала — например, выбранный шрифт не содержит глифов для греческих символов. Вы можете проверить это, скопировав и вставив из этого терминала в другой, запустив что-то вроде «hexdump -C» — это покажет кодовую точку phi (U+03C6, то есть `CF 86' в hexdump utf-8). Если это так, попробуйте выбрать шрифт, который поддерживает греческий.

Видеть что-то вроде \u03C6, и т. д. означает, что, скорее всего, локаль сломана (не Unicode), поэтому клиент принимает символы, применяет к ним обработку Unicode, но затем не может вывести их напрямую и переключается в резервный режим. Так что, я полагаю, настройки SuSE и BT имеют en_US как псевдоним для кодировки, отличной от Unicode, вероятно, ISO-8859-1. Попробуйте установить en_US.UTF-8 напрямую и сравните результаты.

Связанный контент