Arch Linux를 사용하고 있으며 로케일 설정 에 대한 위키 의 지시를 따랐습니다 .
거의 모든 프로그램이 로케일에 대해 불평합니다 locale
. 다음과 같이 보입니다 :
% locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en-US
LC_TIME=en-US
LC_COLLATE="POSIX"
LC_MONETARY=en-US
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT=en-US
LC_IDENTIFICATION="POSIX"
LC_ALL=
또는:
% perl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_TIME = "en-US",
LC_NUMERIC = "en-US",
LC_MONETARY = "en-US",
LC_MEASUREMENT = "en-US",
LC_CTYPE = "en_US.UTF-8",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C")
약간 혼란스러운 점 /etc/locale.gen
은 몇 가지 예가 있다는 것입니다. 모든 UTF-8 라인에는 "something.UTF-8"이 있으며, 실행되는 동안 실행중인 locale-gen
쇼가 en_US.UTF-8... done
있지만 locale -a
사용 가능한 로케일 쇼가 표시 en_US.utf8
됩니다. in /etc/locale-gen
및 LOCALE=
in 형식의 다양한 조합을 시도했지만 /etc/rc.conf
문제를 해결 한 것은 없습니다.
추가 정보:
% locale -a
C
POSIX
en_US
en_US.iso88591
en_US.utf8
Bruce Ediger의 설정 LANG=C
및 LC_ALL=en_US.UTF-8
작업 제안 (사실 설정 LC_ALL
, 설정 LANG
은 중요하지 않음), 무슨 일이 일어나고 있는지 알고 싶습니다. 에 따르면SUS LC_ALL은 다른 모든 LC_ * 변수가 설정되고 널이 아닌 경우이를 대체합니다. 내 시스템에서는 설정되어 있지만 null이므로 무시하고 다른 값을 대신 사용해야합니다. 즉, 응용 프로그램이 호출하는 것 같다, 무슨 일이 아니다 setlocale
으로 LC_ALL
하는 점점 NULL
다른 통화 할 경우에도 다시 및 오류를 생성 setlocale
좋은 문자열을 반환합니다.
여기 상단이다 ltrace
의 locale
(함수 반환 값을 볼 수있는 스크롤 오른쪽)
% ltrace locale
(0, 0, 0, -1, 0x7f5c1ae44510) = 0x7f5c1ae47140
__libc_start_main(0x401d70, 1, 0x7fff7c8cfbf8, 0x404610, 0x4046a0 <unfinished ...>
setlocale(0, "") = "en_US.UTF-8"
setlocale(5, "") = "en_US.UTF-8"
textdomain("libc") = "libc"
argp_parse(0x607280, 1, 0x7fff7c8cfbf8, 0, 0x7fff7c8cfad4) = 0
setlocale(6, "") = NULL
dcgettext(0, 0x405aa8, 5, 0, 0) = 0x405aa8
error(0, 2, 0x405aa8, 1, 0locale: Cannot set LC_ALL to default locale: No such file or directory)
.utf8
에서 사용해야한다고 지적하려고 했지만 분명히 여기에서도 작동합니다 ... en-US의 경우 : (없이 )에 나타 납니까? LOCALE
LC_*
.UTF-8
.utf8
locale -a
export LANG=C
과 export LC_ALL=en_US.UTF-8
어떻게되는지. 내 아치 리눅스 랩톱은 LOCALE="en_US.UTF-8"
/etc/rc.conf에 있으며 랩톱이 LANG = C로 설정되어있는 곳을 알 수 없습니다.
/etc/locale.conf
? 실수 LANG=en-US
로 LANG=en_US
(밑줄 포함) 대신 ( 하이픈으로) 쓴 것 같습니다 .
/etc/locale.gen
도 유용 할 것입니다.
locale -a
있습니까?