Linux에서 LC_* 로케일 문자열은 정확히 무엇을 의미합니까?

Linux에서 LC_* 로케일 문자열은 정확히 무엇을 의미합니까?

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-15de_CH.8859-15en_CU.8859-15de_CHen_US

읽기 쉽고 멋진 표로 차이점을 나열한 표가 있나요?

답변1

두 부분이 다음을 형성합니다.ISO-639 언어 코드. 첫 번째 부분은 언어 자체이고, 두 번째 부분은 (보통) 언어입니다.국가 코드어떤 지역 변형을 지정합니다.

LANG번역이 있는 거의 모든 프로그램에서 변경 효과를 관찰할 수 있습니다 . 프로그램 LC_COLLATE결과에 영향을 미칩니다 sort. 및 LC_DATE의 출력에 영향을 줍니다 . 일부 로캘 설정의 경우 해당 설정을 사용하는 항목이 설치되어 있지 않을 수도 있습니다.datels -l

대부분의 시스템에서는 하나만 LC_LANG설정되고 다른 모든 설정은 이 설정에서 상속됩니다.

(7) 매뉴얼 페이지의 다음 인용문이 locale관련됩니다.

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
메시지가 표시되는 언어와 긍정 또는 부정 답변의 모양을 변경합니다. GNU C 라이브러리에는 이러한 정보를 쉽게 사용할 수 있도록 gettext(3), ngettext(3) 및 rpmatch(3) 함수가 포함되어 있습니다. 카테고리가 "C"가 아닌 유효한 로케일로 설정된 경우 GNU gettext 함수 계열은 환경 변수 LANGUAGE(콜론으로 구분된 로케일 목록 포함)도 준수합니다.
LC_NUMERIC
로케일 설정을 사용하도록 권장되는 경우 printf(3) 및 scanf(3) 계열 함수에서 사용하는 정보를 변경합니다. 이 정보는 localeconv(3) 함수를 사용하여 읽을 수도 있습니다.
LC_TIME
현재 시간을 로컬에서 허용되는 형식으로 표시하도록 strftime(3) 함수의 동작을 변경합니다. 예를 들어, 대부분의 유럽에서는 미국에서 사용되는 12시간제와 달리 24시간제를 사용합니다.
LC_ALL무엇보다도.

관련 정보