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

如何将URL编码中的%C3%B8转换为ø?C#实现失败求助

解决URL编码文件名转换问题

嘿,我来帮你搞定这个URL编码文件名的转换问题!你的核心需求是把像%C3%B8这类URL编码片段转换成对应的Unicode字符ø,先帮你理清问题,再给你靠谱的解决方案。

为什么你的原代码没效果?

你之前的代码只是做了字符串和UTF8字节的来回转换,完全没处理URL编码的逻辑——相当于把原字符串拆成字节再拼回去,%C3%B8自然还是原样,根本没法转换成ø。

正确的C#解决方案

.NET内置了专门处理URL编码的工具类,直接用它们就能轻松完成解码:

通用实现代码

不管是处理单独的编码字符串,还是从ContentDisposition里获取的文件名,都可以用WebUtility.UrlDecode(适用于.NET Core/.NET 5+)或者HttpUtility.UrlDecode(适用于.NET Framework):

using System;
using System.Net; // 记得引入这个命名空间

// 处理需求1:转换"test%C3%B8%C3%B8%C3%B8.txt"
string encodedName1 = "test%C3%B8%C3%B8%C3%B8.txt";
string decodedName1 = WebUtility.UrlDecode(encodedName1);
Console.WriteLine(decodedName1); // 输出:testøøø.txt

// 处理需求2:转换"testdoc%C3%B8%C3%B8%C3%B8.txt"
string encodedName2 = "testdoc%C3%B8%C3%B8%C3%B8.txt";
string decodedName2 = WebUtility.UrlDecode(encodedName2);
Console.WriteLine(decodedName2); // 输出:testdocøøø.txt

针对你现有代码的修改

如果你是从响应头里获取文件名,直接对拿到的字符串做URL解码就行,不需要多余的字节转换操作:

var cont = response.Content.Headers.ContentDisposition?.FileName;
if (!string.IsNullOrEmpty(cont))
{
    var decodedFileName = WebUtility.UrlDecode(cont);
    // 这里就得到了正确解码后的文件名
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:44:28