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

Windows系统内置tar工具处理含特殊字符路径的问题咨询

Windows系统内置tar工具处理含特殊字符路径的问题咨询

我最近在Windows 10命令行里遇到一个棘手的问题:用系统自带的tar工具创建或读取归档文件时,如果归档文件本身的路径包含特殊字符(具体是Unicode码点255以上的字符,比如扩展拉丁字符及更高阶字符),就会出现各种异常。这里要特别强调:问题只出在归档文件自身的路径上,归档包内的文件都是普通ASCII路径,完全正常。

顺带说明下,Windows 10自带的这个tar其实是来自libarchive的bsdtar,路径是c:\Windows\System32\tar.exe。

给大家举几个实际测试的例子:

  • 执行命令tar -c -f Ā.tar foo,结果生成的归档文件是A.tar,而非预期的Ā.tar
  • 如果事先已经存在一个Ā.tar文件,执行tar -t -f Ā.tar会直接报错:

tar: Error opening archive: Failed to open 'A.tar'

  • 要是用像Δ这种更高阶的字符,执行tar -c -f Δ.tar foo直接彻底失败,报错:

tar: Failed to open '?.tar'

我现在想请教大家:这个问题的原因可能是什么?有没有修复方法或者可行的替代方案?

另外我也做了不少测试,整理了一些观察到的现象:

  • 这个问题在cmd、PowerShell、git-bash里都能复现(bash里我是明确调用c:\Windows\System32\tar.exe测试的)
  • 换成Git for Windows自带的GNU tar,在这三个终端里都不会出现这个问题
  • 我在Ubuntu Linux上安装libarchive-tools后用bsdtar测试,也没遇到同样的问题
  • 顺带提一下,如果归档包内的文件路径有码点255以上的字符,哪怕用PAX格式也会出类似问题,而且GNU tar也存在这个情况
  • 我尝试过修改命令行代码页,默认是437,改成UTF-8(chcp 65001)后,问题依然存在
  • 甚至不是所有437代码页里的字符都能正常工作
  • 其他程序比如notepad Δ.txt处理同样的特殊字符完全没问题,没有任何异常

我自己平时习惯用纯ASCII路径,但这个问题在一些场景下会变得很关键——比如用户的Windows用户名里有特殊字符,这些字符会出现在%USERPROFILE%路径里,这时用系统tar工具就会出问题。

我也查了一些可能相关的内容,比如libarchive的几个相关issue(#587、#1629),还有关于UTF-8代码页65001是否在不同机器上存在差异的讨论,但还没找到明确的解决方案。

备注:内容来源于stack exchange,提问作者djvg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 12:13:14