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

Windows环境下拼接变量生成的归档文件名被追加U+25AA字符是什么原因

问题原因分析

U+25AA是符号▪对应的Unicode编码,Windows环境下运行tar命令出现该字符被追加到文件名末尾的问题,通常由以下几个原因导致:

  • 变量本身携带隐形字符:你传入的output_file变量在定义、读取的环节就已经附带了不可见控制字符,常见场景包括从富文本编辑器、Word文档、带格式的终端输出内容里直接复制变量值,或是从带BOM的UTF-8编码、Windows格式换行的配置文件中读取变量,这类隐形字符在变量打印时不会显示,拼接文件名时就会暴露出来。
  • 跨环境字符编码转换异常:如果你是在WSL、Git Bash、Cygwin这类Windows上的类Unix模拟环境中运行tar命令,Windows和类Unix系统的换行符、编码规则差异会引发转换异常:比如Windows原生的换行符是\r\n,如果变量从Windows格式的脚本中读取时末尾的\r没有被过滤,部分Shell会把无法正常识别的\r转换为U+25AA符号作为占位显示。
  • PowerShell编码兼容问题:如果你直接在PowerShell中调用Windows原生的tar.exe工具,PowerShell默认使用UTF-16LE编码存储变量,变量内容传递给tar命令时如果没有完成正确转码,部分不可打印的编码段会被转换为U+25AA这类占位符号追加到文件名末尾。
快速排查方案

你可以直接查看变量的原始编码确认问题:

  • 类Unix模拟环境下运行命令:echo $output_file | cat -A
  • PowerShell环境下运行命令:$output_file | Format-Hex

确认存在多余字符后,只需要在拼接文件名前对变量做一次特殊字符过滤即可,比如PowerShell环境可以用$output_file = $output_file -replace '[^\w\.\-\/]',''清理所有非预期的特殊字符。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:24:03