Locale
為什麼某些 Linux 實用程序會輸出 Unicode(當它不是預期的時候)?
在建構一個讀取命令輸出的工具時,我意識到一些 Linux 實用程序會輸出 Unicode 字元,而我並不真正期望它們會這樣做。例如,在其錯誤輸出中
find
使用‘
(而不是 ASCII'
)作為引號字元:~ > 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
它與您的系統語言環境有關,因為它描述了實用程序應如何輸出特定於語言環境的符號及其組合,例如,
‘’
而不是""
.如果您不希望這樣,請使用不同的語言環境,例如
C
盡可能標準和原始的語言環境:$ LC_CTYPE=C find /root /root find: '/root': Permission denied