我的 mac
的 locale
输出:
╭─bot@mbp13m1.local ~
╰─➤ locale 130 ↵
LANG="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_CTYPE="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_ALL=
服务器 A 的输出:
是一台 Ubuntu
(svddb) ╭─pon@hz-447 ~/opt/svddb ‹feature/create_dna_file*›
╰─➤ locale
LANG=en_US.UTF-8
LANGUAGE=zh_CN:zh
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
到这里就可以排除是服务端或者客户端字符集设置的问题
问题描述:
- 用我自己的
mac
连接其他任意的服务器复制中文都是正常的,但是只有 A 机器是不正常的 - A 机器只有在
zsh
下复制中文会乱码,bash
复制中文是不会乱码的 - 同事的机器
ssh
连接 A 机器也还是复制中文乱码 - 只是复制中文会乱码,用输入法输入中文是不乱码的
ls
显示中文也是不会乱码的,只有有command+v
复制的东西里面有中文,复制出来的东西显示才会乱码- 本地终端试过
iterm2
和vscode
的remote ssh
的终端,都一样,所以可以排除是本地工具的问题
服务器的 shell 换到 bash 一切正常
但是我看了 ~/.zshrc
和 ~/.zshenv
都是普普通通的, 没有特别的条目
问题已经解决,下面是解决方法👇
问题原因:
zsh
的magic
插件有bug
解决方法:在
~/.zshenv
添加export DISABLE_MAGIC_FUNCTIONS=true
出问题的代码块:

注释中也说了:
# *-magic is known buggy in some versions; disable if so
出问题的平台是 Ubuntu16.04