Как определить текущую кодировку символов gnome-terminal?

Я пытаюсь обнаружить текущую кодировку символов gnome-terminal из командной строки. Я попытался использовать gconftool:

$ gconftool-2 --get /apps/gnome-terminal/profiles/Default/encoding
current
$ gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/encoding
en_US.UTF-8
$ gconftool-2 --get /apps/gnome-terminal/profiles/Default/encoding
en_US.UTF-8

Но если я сейчас перейду в меню gnome-terminal и выберем Terminal->Set Character Encoding->ISO-8859-10, а затем снова запустите

$ gconftool-2 --get /apps/gnome-terminal/profiles/Default/encoding
en_US.UTF-8

, чтобы кодирование в /apps/gnome-terminal/profiles/Default/encoding не изменилось на ISO-8859-10, даже если терминал использует эту кодировку. Таким образом, кажется, что gconftool не может использоваться для определения текущей кодировки.

1
задан 20 June 2015 в 18:06

1 ответ

Вот полурешение, обращаясь к проблеме определения кодировки, когда /apps/gnome-terminal/profiles/Default/encoding равно строке current. Предполагая, что строка current означает, что gnome-terminal должен использовать текущую локаль.

Заманчиво проверить переменную LANG, чтобы определить кодировку, но в соответствии с этим вопросом это не является надежным. Вместо этого следует использовать модуль Perl I18N::Langinfo:

temp=$(gconftool-2 --get /apps/gnome-terminal/profiles/Default/encoding)

if [[ $temp == "current" ]] ; then
    perl -MI18N::Langinfo=langinfo,CODESET -E 'say langinfo(CODESET())'
else
    echo $temp
fi

Обратите внимание, что этот ответ не затрагивает проблему определения кодировки gnome-terminal, когда пользователь вручную изменяет кодировку из меню gnome-terminal .

0
ответ дан 23 May 2018 в 19:39
  • 1
    Это решение также молча предполагает, что пользователь использует профиль по умолчанию. – egmont 23 June 2015 в 20:54

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

Похожие вопросы: