1

Когда я печатаю в командной строке Linux

locale

Я получаю длинный список переменных LC_* (например, LC_TIME и т.д.). Значение переменных выглядит примерно так, как в этом списке:

en_US.8859-1
de_DE@euro
fr_FR.utf-8

Что именно означают отдельные части?

Я знаю, что @euro идентичен .8859-15 и, как правило, последняя часть означает фактическую кодировку (отображение байтов в фактические символы). Но что именно делают первые два кода? На какие свойства системы они влияют? Например (для примера), в чем разница между en_US.8859-15 , de_DE.8859-15 , de_CH.8859-15 и en_CU.8859-15? Все они имеют одинаковую кодировку, поэтому все текстовые файлы, которые я открываю в редакторе по своему выбору, выглядят одинаково. Так что же произойдет, если я переключусь с одного "кода предварительной кодировки" на другой "код предварительной кодировки" (например, с de_CH на en_US)?

Есть ли какие-нибудь таблицы, в которых перечислены различия в удобной, легко читаемой таблице?

1 ответ1

2

Две части образуют код языка ISO-639. Первая часть - это сам язык, а вторая (обычно) код страны, указывающий, какой локальный вариант.

Вы можете наблюдать эффект изменения LANG практически с любой программой, которая имеет переводы. LC_COLLATE влияет на результаты программы sort ; LC_DATE влияет на вывод date и ls -l . Для некоторых настроек локали возможно (даже вероятно), что у вас не установлено ничего, что использует их.

В большинстве систем устанавливается только LC_LANG , а все остальные параметры восстанавливаются .

Следующая цитата из справочной страницы locale(7) имеет отношение:

LC_COLLATE
Это используется для изменения поведения функций strcoll(3) и strxfrm(3), которые используются для сравнения строк в локальном алфавите. Например, немецкий острый s сортируется как "ss".
LC_CTYPE
Это изменяет поведение функций обработки и классификации символов, таких как isupper(3) и toupper(3), и функций многобайтовых символов, таких как mblen(3) или wctomb(3).
LC_MONETARY
изменяет информацию, возвращаемую localeconv(3), которая описывает способ, которым обычно печатаются числа, с такими деталями, как десятичная запятая или десятичная запятая. Эта информация внутренне используется функцией strfmon(3).
LC_MESSAGES
изменяет язык сообщений и как выглядит утвердительный или отрицательный ответ. C-библиотека GNU содержит функции gettext(3), ngettext(3) и rpmatch(3) для упрощения использования этой информации. Семейство функций GNU gettext также подчиняется переменной среды LANGUAGE (содержащей список локалей, разделенных двоеточиями), если для категории задан допустимый языковой стандарт, отличный от "C".
LC_NUMERIC
изменяет информацию, используемую семейством функций printf (3) и scanf (3), когда им рекомендуется использовать locale-settings. Эту информацию также можно прочитать с помощью функции localeconv(3).
LC_TIME
изменяет поведение функции strftime (3) для отображения текущего времени в локально приемлемой форме; например, большая часть Европы использует 24-часовые часы по сравнению с 12-часовыми часами, используемыми в Соединенных Штатах.
LC_ALL Все вышеперечисленное.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .