いくつかのLinuxユーティリティが予期しないUnicodeを出力するのはなぜですか?

いくつかのLinuxユーティリティが予期しないUnicodeを出力するのはなぜですか?

コマンド出力を読み取るためのツールの作成中に、一部のLinuxユーティリティがUnicode文字を出力することに気づきました。実際には予期しなかったことでした。たとえば、エラー出力では(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

関連情報