在构建一个读取命令输出的工具时,我意识到一些 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
答案1
它与您的系统区域设置有关,因为它描述了实用程序应如何输出区域设置特定符号及其组合,例如‘’
而不是""
.
如果您不想这样做,请使用不同的区域设置,例如C
尽可能标准和原始的区域设置:
$ LC_CTYPE=C find /root
/root
find: '/root': Permission denied