コマンド出力を読み取るためのツールの作成中に、一部の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