일부 Linux 유틸리티가 예상치 못한 유니코드를 출력하는 이유는 무엇입니까?

일부 Linux 유틸리티가 예상치 못한 유니코드를 출력하는 이유는 무엇입니까?

명령 출력을 읽는 도구를 작성하는 동안 일부 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

관련 정보