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

JS下载带宏dotm文件时特殊字符转ASCII乱码问题

解决JS下载dotm文件时文件名特殊字符乱码问题

你的问题是因为文件名中的特殊字符被URL编码后未正确解码,导致下载后显示为编码后的字符串(比如Å变成%C5、Ø变成%D8)。可以通过以下方式修复:

  • 解码URL编码的文件名:如果文件名是从URL中提取的编码格式,先用decodeURIComponent()解码为原始UTF-8字符串,再赋值给download属性。
  • 确保download属性使用原始字符:不要直接将编码后的字符串作为文件名使用。

修改后的代码示例

如果文件名需要从URL中提取并解码:

// 从URL末尾提取编码后的文件名
const encodedFileName = url.split('/').pop();
// 解码为原始字符
const fileName = decodeURIComponent(encodedFileName);

const anchor = document.createElement("a");
anchor.download = fileName;
anchor.href = url;
// 若URL是data URI格式,保留此行去掉前缀;否则可删除
anchor.href = anchor.href.slice(5);

document.body.appendChild(anchor);
anchor.click();
document.body.removeChild(anchor);

如果文件名是固定的带特殊字符的字符串:

const fileName = 'NEERGÅRDSPARKEN_2024-02-01_15-24-22.dotm'; 
const anchor = document.createElement("a");

anchor.download = fileName;
anchor.href = url;
anchor.href = anchor.href.slice(5);

document.body.appendChild(anchor);
anchor.click();
document.body.removeChild(anchor);

注意:部分旧浏览器对download属性的非ASCII字符支持有限,需确保目标浏览器版本符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:08:14