99%是文件开头带bom(ef bb bf),php的json_decode()遇bom直接拒绝解析且不报行号;验证用xxd composer.json | head -n1,修复需保存为utf-8无bom、清除bom或配置终端及php cli编码为utf-8。

composer.json 有中文却报 JSON decode error
99% 是文件开头带 BOM(EF BB BF),不是语法写错。PHP 的 json_decode() 遇到 BOM 直接拒绝解析,且不报行号。
- 验证方式:
xxd composer.json | head -n1,若输出以00000000: efbb bf开头,就是 BOM - VS Code 中:右下角点编码名 → Save with Encoding → 选
UTF-8(注意不是UTF-8 with BOM) - Linux/macOS 终端快速清除:
sed -i '1s/^\xEF\xBB\xBF//' composer.json - Windows 记事本保存过的文件几乎必带 BOM,务必换编辑器重存
Windows CMD/PowerShell 下输出中文变问号或方块
根本不是 Composer 出错,是终端用 chcp 936(GBK)去解码它输出的 UTF-8 字节流——字节没丢,但解错了。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时修复:
chcp 65001(CMD)或 PowerShell 中执行[console]::OutputEncoding = [System.Text.UTF8Encoding]::new() - 长期方案:换用 Windows Terminal,并在配置中设
"fontFace": "Cascadia Code"或"Fira Code"—— 它默认启用 UTF-8 且字体支持中文 - VS Code 集成终端需三处同步:
terminal.integrated.defaultProfile.windows设为 PowerShell;用户$PROFILE加$OutputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding;设置里补"terminal.integrated.shellArgs.windows": ["-NoExit", "-Command", "chcp 65001 > $null"]
Git Bash 中显示正常但粘贴命令后乱码
MinTTY 本身支持 UTF-8,但 Windows 剪贴板无编码标记,粘贴时按当前 $LANG 错误解码。
- 检查:
echo $LANG,若为空或C,说明 locale 未生效 - 临时修复:
export LANG=zh_CN.UTF-8或export LC_ALL=UTF-8 - 永久生效:在
~/.bashrc末尾加这两行,再执行source ~/.bashrc - 右键终端标题栏 → Options… → Text → Font 改为
Microsoft YaHei或Consolas;Character set 明确设为UTF-8(不是 Default)
PHP CLI 自身编码没对齐,日志仍乱码
即使终端和文件都 OK,default_charset 和 mbstring.internal_encoding 不是 UTF-8,PHP 输出照样崩。
- 验证命令:
php -i | grep -E "(default_charset|mbstring\.internal_encoding)" - 确认两者值均为
UTF-8(注意大小写,必须是UTF-8,不是utf8) - 若不符,在 CLI 专用的
php.ini(不是 Web 服务器用的那个)里加:default_charset = "UTF-8"和mbstring.internal_encoding = UTF-8 - 改完必须关掉所有终端重开,否则设置不生效










