【发布时间】:2010-10-10 19:34:19
【问题描述】:
我想将 Unicode 骷髅和交叉骨添加到我的 shell 提示符中(特别是 'SKULL AND CROSSBONES' (U+2620)),但我不知道魔法咒语使 echo 吐出它或任何其他 4 位 Unicode 字符。两位数的很容易。例如,echo -e "\x55",.
除了下面的答案之外,还应该注意的是,很明显,您的终端需要支持 Unicode 才能使输出达到您的预期。 gnome-terminal 在这方面做得很好,但它不一定默认打开。
在 macOS 的终端应用程序中,转到 Preferences-> Encodings 并选择 Unicode (UTF-8)。
【问题讨论】:
-
请注意,您的 "2 digit one's are easy (to echo)" 注释仅对 UTF-8 语言环境中不超过
"\x7F"的值有效(@ 987654323@ 标签表明您的标签是)... 单字节 表示的模式永远不会在\x80-\xFF范围内。此范围在单字节 UTF-8 字符中是非法的。例如,U+0080(即\x80)的 Unicode 代码点值实际上是 UTF-8 中的 2 个字节。\xC2\x80.. -
例如
printf "\\u007C\\u001C". -
NB: 对我来说,
gnome-terminal,echo -e '\ufc'不会产生 ü,即使字符编码设置为 UTF-8。但是,例如urxvt确实会按预期打印例如printf "\\ub07C\\ub01C"(不带有 � 或框)。 -
@Peter.O 为什么
bash标签是一个有用的提示?不同的终端在 CJK 或......中是常见的吗? -
@Peter.O zsh、fish、scsh、elvish 等...有许多不同的 shell,每个都可以处理他们想要(或不想要)的 unicode 字符。 “bash”清楚地表明这个问题不是关于一些奇怪的外壳,它做事不同。
标签: bash shell unicode character-encoding