You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tiny-process-library调用cURL上传含日文文件名文件Windows报错问题

问题原因

你遇到的是Windows平台下命令行参数编码的兼容性问题,核心原因有两个:

  • 你传入的UTF-16格式命令行已经正确传递给了CreateProcessW,但旧版本的Windows版curl默认以ANSI编码解析命令行参数,如果系统默认代码页不包含日文(比如简体中文系统默认代码页是936),日文字符就会被转成问号,导致curl找不到对应文件。
  • macOS底层默认用UTF-8编码处理命令行参数,所以不会出现转码丢失的问题。

验证方法

你可以直接在PowerShell中手动执行对应curl命令,粘贴包含日文的完整文件路径:

curl "https://api.example.com/media/test.mp3?format=json" -T "C:/Users/bob/AppData/Local/Temp/ぁ.mp3"

如果同样报错找不到?.mp3,就证明问题出在curl本身的编码处理,和你对tiny-process-library的调用逻辑无关。

解决方案

方案1:升级curl版本

curl从7.78.0版本开始原生支持Windows平台的Unicode命令行参数,直接升级到官方最新的Windows版curl即可解决问题,不需要修改现有代码。

方案2:绕开命令行传文件名(兼容性最好)

修改curl命令,从标准输入读取上传内容,完全避开命令行编码问题:

  1. 把curl命令改成curl "https://api.example.com/media/test.mp3?format=json" -T -,其中-T -代表从标准输入读取待上传的内容。
  2. 代码中打开对应的日文文件,把读取到的文件内容写入tiny-process-library创建的进程的标准输入即可。

方案3:启用系统UTF-8代码页(不推荐)

Windows 10 1703及以上版本可以在系统区域设置中开启"Beta版:使用Unicode UTF-8提供全球语言支持",开启后所有ANSI程序默认用UTF-8解析命令行参数,但会影响其他老旧软件的兼容性,不建议生产环境使用。


内容的提问来源于stack exchange,提问作者easysaesch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:54:00