运维

运维相关知识和内容

Mac 连接 Linux 时中文文件名出现乱码问题

一、问题描述

本地 MacBook,将一个网站的数据从阿里云上传到ECS服务器后(CentOS 7 系统),完成网站数据迁移后,打开网站发现出现了很多 404 ,然后检查了下服务器上的对应目录,发现所有以中文命名的文件全部都是乱码,后来尝试用 touch 命令新建一个中文名的文件,居然也是问号(?)乱码。

然后在ECS上安装了中文包支持,但是文件名中的中文还是乱码。

二、问题解决

后来注意到远程连接会有一个警告:

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

网上搜了这个警告的解决办法,基本有 2 个。

1、解决办法 1

在 Mac 终端编辑 ~/.zshrc 文件,在文件末添加两行代码:

export LC_ALL=en_US.UTF-8  
export LANG=en_US.UTF-8

然后 source ~/.zshrc 使设置生效。

2、解决办法 2

在 Mac 终端编辑 /etc/ssh/ssh_config,在最后一行找到 SendEnv LANG LC_*,注释掉这一行,中文文件名乱码的问题也解决了!