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

Angular file-saver保存含阿拉伯字符文件名时特殊字符异常问题

解决含阿拉伯字符文件名在Angular file-saver中显示异常的问题

问题根源

你使用的\u202A是LTR嵌入控制字符,部分文件处理库(包括file-saver)在解析文件名时,会将这类嵌入型控制字符识别为非法/特殊字符并转义成下划线,导致"456"变成"_456"。而C#的File.Create对这类控制字符兼容性更好,所以能正常显示。

解决方案

把\u202A替换为左到右标记(\u200E),这是一种中性的方向控制字符,仅强制后续文本按LTR顺序渲染,不会被file-saver转义:

修改后的后端C#代码

Console.OutputEncoding = System.Text.Encoding.UTF8;
var fileName = new StringBuilder();
string city = "جزيرة شقر"; // 或示例"New York"
fileName.Append("X_123-");
fileName.Append("Text-");
fileName.Append(city);
fileName.Append("-" + "\u200E" + "456"); // 替换\u202A为\u200E
Console.WriteLine(fileName);

更稳妥的全局LTR控制

如果希望整个文件名强制LTR顺序,也可以在文件名最开头添加\u200E,无需在数字前单独加:

Console.OutputEncoding = System.Text.Encoding.UTF8;
var fileName = new StringBuilder();
string city = "جزيرة شقر";
fileName.Append("\u200E"); // 全局强制LTR
fileName.Append("X_123-Text-");
fileName.Append(city);
fileName.Append("-456");
Console.WriteLine(fileName);

这样修改后,后端生成的文件名在Angular中用fileSaver.saveAs保存时,既能保持正确的LTR顺序,数字也不会被转义成下划线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:02:06