명령 출력을 읽는 도구를 작성하는 동안 일부 Linux 유틸리티가 유니코드 문자를 출력한다는 것을 깨달았습니다. 실제로는 예상하지 못했던 일이었습니다. 예를 들어, 오류 출력에서 (ASCII 대신 )을 따옴표 문자로 find
사용합니다 .‘
'
~ > find /root
/root
find: ‘/root’: Permission denied
다음에도 동일하게 적용됩니다 g++
.
main.cpp: In function ‘int main()’:
main.cpp:2:9: error: ‘foo’ was not declared in this scope
return foo;
^~~
main.cpp:2:9: note: suggested alternative: ‘bool’
return foo;
^~~
bool
이것이 내 시스템 로캘과 관련이 있나요? 아니면 이것은 다른 것입니까? 출력 localectl
:
System Locale: LANG=en_ZA.UTF-8
LANGUAGE=en_ZA:en
VC Keymap: n/a
X11 Layout: us
X11 Model: pc105
답변1
유틸리티가 로케일별 기호와 그 조합을 출력 하는 방법을 설명하므로 시스템 로케일과 관련이 있습니다 ‘’
.""
이 작업을 원하지 않으면 C
가능한 한 표준 및 원본과 같은 다른 로케일을 사용하십시오.
$ LC_CTYPE=C find /root
/root
find: '/root': Permission denied