Git 中文路径乱码源于 core.quotepath 默认为 true,设为 false 可修复显示;Composer 中文路径问题本质是 Windows 下 PHP 路径解析失败,无兼容方案,必须使用英文路径。

Git 提交中文路径包时的乱码,和 Composer 没有直接关系——问题出在 Git 本身对路径的转义策略,不是 Composer 解析或安装环节导致的。
git status 显示 \345\271\277 这类八进制序列
这是 Git 默认把中文路径当作“非 ASCII 安全字符”做了转义,本质是 core.quotepath 设为 true 的行为,不是编码错误。
- 执行
git config --global core.quotepath false即可让git status、git diff --name-only等命令原样输出中文路径 - 该设置只影响路径显示,不影响提交、克隆、检出等任何 Git 核心操作
- 如果已设但无效,检查是否被项目级配置覆盖:
git config --local core.quotepath
composer install 后 vendor 目录里中文文件名变问号或方块
这不是 Git 乱码的延续,而是 Composer 在 Windows 上调用 PHP 底层函数(如 scandir()、realpath())时路径解析失败所致。
在 OpenClaw 中管理 GitHub 仓库、Pull Request、Issue 与工作流。适用于审查 PR、管理 Issue、自动化 GitHub Actions、同步仓库等场景。
- 根本原因:Windows 终端代码页为 GBK(
chcp显示 936),而 Git 或 Composer 提供的路径字节流是 UTF-8,PHP 收到后语义断裂 - 临时验证:把项目移到纯英文路径下(如
C:\dev\myapp),再运行composer install—— 若正常,就坐实是中文路径问题 - 没有“兼容方案”,Composer 官方不支持中文路径;
COMPOSER_HOME也必须设为英文路径
git log 提交信息中文显示为 ???? 或锟斤拷
常见于 Git Bash 或旧版 MSYS2 环境,主因是 less 分页器未被告知用 UTF-8 解码,而非 Git 存储有问题。
- 配三项:
git config --global i18n.logoutputencoding utf-8(输出编码)、git config --global i18n.commitencoding utf-8(提交编码)、export LESSCHARSET=utf-8(分页器解码) - 注意:
i18n.logoutputencoding不会修复历史中用 GBK 提交的 commit,那些记录需重提 - 若仍乱码,检查终端本身编码:Git Bash 中运行
locale,确认LANG和LC_ALL是UTF-8结尾
composer.json 含中文却报 JSON decode error
99% 是文件带 BOM 头(EF BB BF),PHP 的 json_decode() 一读就挂,和 Git 或 Composer 的路径处理完全无关。
- 用 VS Code 打开
composer.json,右下角看编码名 —— 若是 “UTF-8 with BOM”,点击后选 “Save with Encoding → UTF-8”(不含 BOM) - 命令行快速检测:
xxd composer.json | head -n1,开头是00000000: efbb bf就是 BOM - 团队协作务必在
.gitattributes加:composer.json text eol=lf encoding=utf-8,防 Git 自动注入 BOM
真正棘手的是路径层面的中文:Git 可以关掉转义,但 Composer + PHP 在 Windows 上面对中文目录名就是硬性不兼容。别指望改配置绕过,删掉中文路径才是唯一稳态解法。

















