git 转换字符,如 ? 和 ?下划线 (_)

seb*_*ter 6 git tmux

我有一个 git 存储库,其中包含我的 .bashrc 以及以下内容:

\n\n
...\nPROMPT_DIRTY=" \\[\\033[1;31m\\]\xe2\x9c\x97\\[\\033[0m\\]"\nPROMPT_CLEAN=" \\[\\033[1;32m\\]\xe2\x9c\x93\\[\\033[0m\\]"\n...\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我在 Archlinux 发行版上克隆这个存储库,我会得到这个(上面的)输出。但是,如果我在 Debian(尝试了多个版本)或 FreeBSD 10.0 上克隆存储库,那么我将得到以下信息:

\n\n
...\nPROMPT_DIRTY=" \\[\\033[1;31m\\]_\\[\\033[0m\\]"\nPROMPT_CLEAN=" \\[\\033[1;32m\\]_\\[\\033[0m\\]"\n...\n
Run Code Online (Sandbox Code Playgroud)\n\n

即特殊字符\xe2\x9c\x93 和\xe2\x9c\x97 被转换为下划线(_)。

\n\n

有人知道为什么会发生这种情况吗?我想要原始的特殊非字母数字字符而不是下划线。

\n

seb*_*ter 6

我使用 tmux 来查看 .bashrc 文件。问题在于 tmux 禁用了 UTF-8 支持。

根据联机帮助页,tmux 尝试通过查看字符串“UTF-8”的 LC_ALL、LC_CTYPE 和 LANG 环境变量来猜测 UTF-8 支持。您可以使用“-u”参数强制 tmux UTF-8 支持。

就我而言,尽管我的 LANG 环境变量设置为 UTF-8 语言环境,但 tmux 猜测错误。因此 tmux 无法识别“UTF-8”字符串,但在我使用“-u”标志调用 tmux 并因此强制支持 UTF-8 后,一切看起来都符合预期。

感谢@IQAndreas 指出解决方案。