mac ssh 连接 Ubuntu 复制中文会乱码怎么办?

我的 maclocale 输出:

╭─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 复制的东西里面有中文,复制出来的东西显示才会乱码
  • 本地终端试过 iterm2vscoderemote ssh 的终端,都一样,所以可以排除是本地工具的问题

图片.png

服务器的 shell 换到 bash 一切正常

图片.png

但是我看了 ~/.zshrc~/.zshenv 都是普普通通的, 没有特别的条目

阅读 2.3k
1 个回答

问题已经解决,下面是解决方法👇

问题原因:zshmagic 插件有 bug
解决方法:在 ~/.zshenv 添加 export DISABLE_MAGIC_FUNCTIONS=true

出问题的代码块:
图片.png

注释中也说了:# *-magic is known buggy in some versions; disable if so

图片.png

出问题的平台是 Ubuntu16.04

图片.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题