Claude Code 处理中文乱码问题
为了彻底解决 Claude Code 在处理中文相关工作时出现的乱码、刷屏或文件编码双重损坏(Double-encoding)问题,必须从操作系统环境、终端配置和项目自身规范三个维度强制统一为 UTF-8 格式。
以下是确保 Claude Code 始终以 UTF-8 格式读写的最有效设置方法:
第一道防线:强制终端环境为 UTF-8
Claude Code 是命令行工具,其输出和对系统环境的感知极大程度上依赖于宿主终端的编码。
1. Windows 系统(最容易出现中文乱码)
Windows 默认使用本地代码页(如 GBK / CP936),这经常导致 Node.js 应用(如 Claude Code)在处理 I/O 时发生混淆。
- 永久开启系统级 UTF-8 (推荐)
- 按
Win + R输入intl.cpl打开“区域”设置。 - 点击“管理”选项卡,再点击“更改系统区域设置”。
- 勾选:“Beta 版:使用 Unicode UTF-8 提供全球语言支持”。
- 重启电脑。(注意:这可能会让某些极老的国内软件显示乱码,但对现代开发环境极其友好)。
- 或者,在终端中强制使用 UTF-8
如果你使用 PowerShell,可以在你的 PowerShell Profile ($PROFILE) 中加入以下代码,强制控制台使用 UTF-8 编码读写:
[console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
$OutputEncoding = [console]::OutputEncoding
如果使用 CMD,确保在运行 Claude Code 前执行 chcp 65001。
2. macOS / Linux 系统
Unix 系统的终端默认较好,但必须确保 LANG 和 LC_ALL 环境变量没有被错误配置。
在你的 ~/.zshrc 或 ~/.bashrc 文件末尾添加:
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
保存后执行 source ~/.zshrc 即可生效。
第二道防线:配置 Node.js 强制以 UTF-8 运行
Claude Code 底层是基于 Node.js 运行的(通常通过 npx 或全局安装调用)。你可以通过设置环境变量,强制 Node.js 在读写文件和输出控制台时使用 UTF-8,彻底禁用本地编码回退。
在操作系统的环境变量中,新增一个系统级变量:
- 变量名:
NODE_OPTIONS - 变量值:
--use-openssl-ca --icu-data-dir=node_modules/full-icu(其实最直接的是依赖系统环境,但如果你想强迫 Node 不猜编码,可以尝试注入类似选项,不过对于现代 Node 来说,最核心的是设置好环境变量)。
更直接有效的做法是设置系统环境变量强制 C 运行库的编码处理:
- 变量名:
PYTHONIOENCODING(虽然 Claude Code 是 Node,但如果它底层调用了 Python 脚本解析某些文件,加上这个会安全很多) - 变量值:
utf-8
第三道防线:在项目中引入 .editorconfig 规范
Claude Code 会读取和修改你的项目文件。如果你的代码文件本身是 GBK 编码,Claude Code 写入时可能会用 UTF-8 覆盖,直接导致文件永久损坏。
在你的项目根目录下创建一个名为 .editorconfig 的文件,填入以下内容。绝大多数现代编辑器和部分 AI 工具都会识别该文件:
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
排查警告:运行 Claude Code 之前,请务必确保项目中现有的中文文件已经是 UTF-8 (无 BOM) 格式。如果原来是 GBK,请先用 VS Code 右下角的编码选项,将其重新保存为 UTF-8。
总结检查清单:
- 查系统:是否开启了 UTF-8 (Windows) 或设置了
LC_ALL=zh_CN.UTF-8(Mac/Linux)? - 查终端字体:是否使用了支持中文和编程连字的等宽字体(如 Fira Code, JetBrains Mono)?缺失字体会导致部分字符显示为空白方块。
- 查项目文件:项目内所有的源码、Markdown、JSON 文件是否全部已转换为 UTF-8?

浙公网安备 33010602011771号