macOS 的 zsh 默认 UTF-8 支持不完整,需在 ~/.zshrc 中按序添加 export LANG=en_US.UTF-8 和 export LC_ALL=en_US.UTF-8,并配置 Git 相关编码选项以解决中文乱码问题。
macos 的 zsh 默认对中文等 utf-8 编码支持不完整,尤其在 git、文件名、命令输出或 python 脚本交互中容易出现乱码。关键不是改终端字体,而是让 shell 环境本身正确声明并使用 utf-8 编码。
设置全局 UTF-8 语言环境变量
在 ~/.zshrc 文件末尾添加以下两行(顺序不能颠倒):
- export LANG=en_US.UTF-8
- export LC_ALL=en_US.UTF-8
这两项确保 zsh 启动时强制使用 UTF-8 字符集,覆盖系统可能残留的 C 或 en_US 等非 UTF-8 locale。执行 source ~/.zshrc 生效后,运行 locale 命令应全部显示 UTF-8。
配置 Git 中文支持(避免 commit/log 乱码)
Git 单独依赖环境变量和内部配置,需额外设置:
- git config --global core.quotepath false(不转义路径中的非 ASCII 字符)
- git config --global gui.encoding utf-8
- git config --global i18n.commit.encoding utf-8
- git config --global i18n.logoutputencoding utf-8
这些配置让 Git 读写日志、提交信息、文件名时统一按 UTF-8 处理,与 zsh 环境保持一致。
验证与常见修复点
若仍乱码,检查以下三项:
- 终端字体:macOS 自带 Terminal.app 需在「偏好设置 → 描述文件 → 文本」中选择支持中文的字体(如 PingFang SC 或 SF Pro Display),禁用“使用亮度粗体”
- TERM 值:运行 echo $TERM,应为 xterm-256color;若为 ansi 或空,可在 ~/.zshrc 加 export TERM=xterm-256color
- Python/Node.js 输出:某些脚本会忽略环境变量,可临时加 export PYTHONIOENCODING=utf-8 或 export NODE_OPTIONS=--experimental-strip-types(仅调试用)


















