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

C#中使用Uri处理非ASCII文件名的异常问题

解决Uri构造时的格式异常问题

当你使用含非ASCII字符的文件名直接构造Uri实例时,Uri默认会尝试将其解析为绝对URI,但纯文件名不符合绝对URI的格式规范,因此抛出格式异常。以下是可行的解决方案:

方案1:指定Uri类型为相对路径

使用Uri的重载构造函数,明确指定UriKind.Relative,告知系统这是一个相对路径的文件名:

var myUri = new Uri("سلام.txt", UriKind.Relative);

如果后续需要转换为绝对文件URI,可以结合当前目录构造:

var baseDir = new Uri(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar);
var absoluteUri = new Uri(baseDir, myUri);

方案2:使用文件URI协议前缀

给文件名加上file:///前缀,让Uri识别为文件类型URI,同时确保非ASCII字符被正确处理:

var encodedFileName = Uri.EscapeDataString("سلام.txt");
var myUri = new Uri($"file:///{encodedFileName}");

也可以借助FileInfo自动处理路径编码与格式:

var myUri = new Uri(new FileInfo("سلام.txt").FullName);

注意:Windows系统下文件URI格式通常为file:///C:/path/文件名.txt,上述方法会自动适配系统路径规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:37:08