Mac怎么解决终端中文显示乱码_Mac如何设置终端的字符编码正确显示中文内容【避坑】

老墨小哥_4360

老墨小哥_4360

2026-03-21

998人浏览

原创

mac终端中文乱码需依次检查并设置utf-8编码、配置lang/lc_all环境变量、选用支持cjk的字体(如pingfang tc)、验证locale可用性,并为ssh会话启用环境变量传递。

mac怎么解决终端中文显示乱码_mac如何设置终端的字符编码正确显示中文内容【避坑】

如果您在Mac终端中输入或显示中文时出现乱码,通常是由于终端的字符编码未正确设置为UTF-8,或Shell环境变量未声明本地化编码。以下是解决此问题的具体步骤:

一、确认并设置终端默认编码为UTF-8

macOS终端应用本身支持UTF-8,但需确保其配置未被意外修改为其他编码(如ISO Latin-1)。该设置直接影响字符渲染层对中文的解析能力。

1、打开“终端”应用,点击顶部菜单栏的“终端”→“偏好设置”。

2、在左侧边栏选择当前使用的配置文件(通常为“Pro”或“Basic”),点击右上角的“文本”标签页。

3、向下滚动至“字符编码”区域,确认下拉菜单中已选中Unicode (UTF-8)。

4、关闭偏好设置窗口,重启终端窗口使更改生效。

二、检查并修正Shell启动文件中的locale配置

Shell启动时若未正确加载中文本地化环境,即使终端支持UTF-8,命令输出(如ls、git log)仍可能因LANG或LC_ALL变量缺失而回退至C locale,导致中文路径或提示乱码。

1、在终端中执行命令:echo $LANG,观察输出是否为类似zh_CN.UTF-8或en_US.UTF-8的值;若返回空或C,则需配置。

2、根据所用Shell确定对应启动文件:zsh用户编辑~/.zshrc,bash用户编辑~/.bash_profile(macOS Catalina及以后默认zsh)。

3、执行命令:nano ~/.zshrc(以zsh为例)。

4、在文件末尾添加以下两行(不可省略引号):

export LANG="zh_CN.UTF-8"

export LC_ALL="zh_CN.UTF-8"

5、保存文件(Ctrl+O → 回车 → Ctrl+X退出nano),再执行:source ~/.zshrc。

三、验证系统是否预装中文locale

若上一步中设置zh_CN.UTF-8后仍无效,可能因系统未生成对应locale定义,需通过locale命令确认可用列表并触发生成。

1、在终端中运行:locale -a | grep zh_CN。

2、若无任何输出,说明该locale未激活;此时需运行:sudo locale-gen zh_CN.UTF-8(注意:macOS原生不提供locale-gen命令,此步仅适用于通过Homebrew安装的glibc环境;多数情况下跳过本步)。

Mootion
Mootion

Mootion是一款将文本、脚本、图片和想法生成视频与 3D 动画的 AI 创作平台。

下载

3、更稳妥做法是改用系统自带的en_US.UTF-8:将~/.zshrc中两行改为:

export LANG="en_US.UTF-8"

export LC_ALL="en_US.UTF-8"

4、重新加载配置:source ~/.zshrc。

四、检查字体是否支持中文字符集

即使编码正确,若终端当前使用的等宽字体不含中文字形(如Menlo、Courier New),中文仍将显示为空格或方框。必须选用同时覆盖ASCII与CJK区的混合字体。

1、打开终端“偏好设置”,选择当前配置文件,切换到“描述文件”→“文本”标签页。

2、取消勾选“使用双宽度字体”(避免部分字体异常拉伸)。

3、点击“字体”右侧的“更改…”按钮。

4、在字体面板中,搜索并选择PingFang TC(macOS原生中文字体,兼容性最佳)或Monaco(需确认已启用中文子集)。

5、点击“仅单字节字符使用此字体”复选框,确保中文字符被正确映射。

五、排查SSH远程会话中的编码继承问题

当通过SSH连接Linux服务器并在远程终端显示中文时,本地Mac终端的UTF-8设置不会自动传递给远端Shell,需显式声明编码协商机制。

1、在Mac终端中编辑SSH配置文件:nano ~/.ssh/config。

2、为对应主机添加如下配置块(以example.com为例):

Host example.com

SendEnv LANG LC_*

3、在远程服务器的/etc/ssh/sshd_config中确认存在:AcceptEnv LANG LC_*,并重启sshd服务(需管理员权限)。

4、重新SSH连接后,在远程端执行:locale,确认LANG变量已同步为UTF-8值。

相关专题

更多
常见的编码方式
常见的编码方式

常见的编码方式有ASCII编码、Unicode编码、UTF-8编码、UTF-16编码、GBK编码等。想了解更多编码方式相关内容,可以阅读本专题下面的文章。

2023.10.24

1448

7

a和A对应的ASCII码数值
a和A对应的ASCII码数值

a的ascii码是65,a的ascii码是97;ascii码表中,一个字母的大小写数值相差32,一般知道大写字母的ascii码数值,其对应的小写字母的ascii码数值就算出来了,是大写字母的ascii码数值“+32”。想了解更多相关的内容,可阅读本专题下面的相关文章。

2024.10.24

5267

11

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

2023.07.05

6299

9

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

2023.07.06

1820

6

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

2023.07.24

1074

5

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

4117

7

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

3861

6

macOS怎么切换用户账户
macOS怎么切换用户账户

在 macOS 系统中,可通过多种方式切换用户账户。如点击苹果图标选择 “系统偏好设置”,打开 “用户与群组” 进行切换;或启用快速用户切换功能,通过菜单栏或控制中心的账户名称切换;还能使用快捷键 “Control+Command+Q” 锁定屏幕后切换。

2025.05.09

4624

14

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4090

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 186人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 20.5万人学习

好课诞生记
好课诞生记

共20课时 | 7.2万人学习