Git Bash 的 curl 发中文 JSON 变成乱码的解决办法
Windows 上 Git Bash 自带的 curl 没有开启 Unicode 支持,-d 里的中文会按 GBK 发出;Node 服务用 request.json() 读取时把非法字节换成 U+FFFD,乱码直接入库。服务端改成严格按 UTF-8 解码、不合法就返回 400,客户端改从 UTF-8 文件或标准输入发送请求体。
这个主题下共有 4 篇文章。
Windows 上 Git Bash 自带的 curl 没有开启 Unicode 支持,-d 里的中文会按 GBK 发出;Node 服务用 request.json() 读取时把非法字节换成 U+FFFD,乱码直接入库。服务端改成严格按 UTF-8 解码、不合法就返回 400,客户端改从 UTF-8 文件或标准输入发送请求体。
Node 写出的 .ps1 默认是不带 BOM 的 UTF-8,Windows PowerShell 5.1 会按系统 ANSI 代码页(中文系统为 GBK)读取:中文路径失效,有的中文字符串还会吞掉结束引号。脚本开头写入 BOM 即可;Start-Process 起不来时还要主动以非零退出。
Get-ScheduledTaskInfo 返回的 LastTaskResult 是无符号 32 位数,0x800710E0 这类失败码超过 Int32 上限,转成 [int] 会让整个查询报错。改用 [long] 读取、按十六进制显示;同一结果在 COM 接口里是负数,比较前要先统一。
Node 24 在 Windows 上不经 shell 启动 pnpm.cmd 会同步抛出 spawn EINVAL。改用 cmd.exe /d /s /c pnpm 启动可以解决;超时时还要用 taskkill /T 结束整个进程树,cmd.exe 输出的中文提示要按 GBK 解码。