Skip to content

macOS ssh 提示 cannot change locale (UTF-8) #19

Description

@Honye

macOS 上通过终端 ssh 连接服务器时提示警告:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

连接上服务器后 vim 编辑文本中文显示乱码。

使用其他 SSH 应用连接服务器没有警告且中文正常显示。

原因:

macOS 终端在建立 SSH 连接时,会将本地的语言环境变量(如:LANG 和 LC_*)传递给远程服务器。远程服务器上缺少 UTF-8 对应的语言环境导致无法正确识别这些变量。

解决方法:

  1. 检查可用的语言环境

登录到服务器后运行:

locale -a

查看已安装支持的语言环境:

en_US.utf8
zh_CN.utf8
  1. 修改连接时语言环境
LC_CTYPE=en_US.UTF-8 ssh user@host

en_US.UTF-8 或 en_US.utf8 都可以,两者实际上指的是相同的语言环境,建议使用 POSIX 标准 en_US.UTF-8

每次连接时输入语言环境比较麻烦,可修改 ssh 配置 ~/.ssh/config 一劳永逸:

Host <host_alias>
  HostName <host>
  User <user>
  Port 22
  SetEnv LC_CTYPE=en_US.UTF-8

现在不会出现警告,且中文正常显示

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions