Терминал использует переменные среды, чтобы определить, какой набор символов использовать, поэтому вы можете определить его, посмотрев на эти переменные:
Эти переменные среды используются приложениями, использующими терминал для ввода-вывода. Сам эмулятор терминала ничего о них не знает, и его текущая эффективная кодировка символов - это настройка где-то в программе эмулятора (член данных внутри класса libvte в случае терминала GNOME).
JdeBP
1
предлагаемый здесь порядок переменных не очень хорош. более полное решение могло бы выглядеть примерно так: echo $ {LC_ALL: - $ {LC_CTYPE: - $ {LANG}}}. опять же, устанавливаемая переменная не является гарантией того, что они действительны, поэтому вы должны придерживаться localeпрограммы (как показано в других ответах здесь).
Майк Фрайсингер
Как сказал @JdeBP, терминал не использует localeпеременные среды для определения своей кодировки. Однако терминал может сообщить приложениям, которые с ним взаимодействуют, свою кодировку, установив localeпеременные среды. Например, на MacOS вы можете выбрать кодировку терминала и , возможно , установить localeпеременные окружения при запуске терминала в Terminal> Preferences> Profiles> Advanced.
Maggyero
97
locale команда без аргументов распечатает значения всех соответствующих переменных среды, кроме LANGUAGE.
Это то, что у меня сработало в системе CentOS. Он показал кодировку системы на основе текущих языковых настроек. Настройки терминала, используемые для доступа к этой машине, - это другая история и функция используемого клиента.
Из всех вышеперечисленных предложений единственным предложением, которое сработало с моим ящиком Slackware64 v. 14.2, был этот фрагмент Python. Спасибо!
Thomas Altfather Good
6
Насколько мне известно, нет.
Косвенные признаки из $LC_CTYPE, localeкажется , и такая мощь заманчиво, но они полностью отделены друг от кодирующего приложения терминала ( на самом деле эмулятор) , случается, используя при отображении символов на экране.
Единственный способ точно определить кодировку - это вывести что-то, что присутствует только в кодировке, например ä, сделать снимок экрана, проанализировать это изображение и проверить правильность выходного символа.
Ответы:
Терминал использует переменные среды, чтобы определить, какой набор символов использовать, поэтому вы можете определить его, посмотрев на эти переменные:
или
источник
locale
программы (как показано в других ответах здесь).locale
переменные среды для определения своей кодировки. Однако терминал может сообщить приложениям, которые с ним взаимодействуют, свою кодировку, установивlocale
переменные среды. Например, на MacOS вы можете выбрать кодировку терминала и , возможно , установитьlocale
переменные окружения при запуске терминала вTerminal
>Preferences
>Profiles
>Advanced
.locale
команда без аргументов распечатает значения всех соответствующих переменных среды, кроме LANGUAGE.Для текущей кодировки:
Для доступных языков:
Для доступных кодировок:
источник
Проверьте кодировку и язык:
Получить все языки:
Измените на pt_PT.utf8:
источник
Если у вас есть Python:
источник
Насколько мне известно, нет.
Косвенные признаки из
$LC_CTYPE
,locale
кажется , и такая мощь заманчиво, но они полностью отделены друг от кодирующего приложения терминала ( на самом деле эмулятор) , случается, используя при отображении символов на экране.Единственный способ точно определить кодировку - это вывести что-то, что присутствует только в кодировке, например
ä
, сделать снимок экрана, проанализировать это изображение и проверить правильность выходного символа.К сожалению, это невозможно.
источник
Чтобы увидеть информацию о текущем языковом стандарте, используйте
locale
команду. Ниже приведен пример на RHEL 7.8.источник