将 url 从 utf-8 编码重新编码为 iso-8859-1 编码

2024-05-22

我有 file:// 链接,其中包含非英语字符,这些字符以 UTF-8 进行 UrlEncoded。为了使这些链接在浏览器中工作,我必须对它们重新编码。

file://development/H%C3%A5ndplukket.doc

becomes

file://development/H%e5ndplukket.doc

我有以下有效的代码:

public string ReEncodeUrl(string url)
{
    Encoding enc = Encoding.GetEncoding("iso-8859-1");
    string[] parts = url.Split('/');
    for (int i = 1; i < parts.Length; i++)
    {
        parts[i] = HttpUtility.UrlDecode(parts[i]); // Decode to string
        parts[i] = HttpUtility.UrlEncode(parts[i], enc); // Re-encode to latin1
        parts[i] = parts[i].Replace('+', ' '); // Change + to [space]
    }
    return string.Join("/", parts);
}

有没有更干净的方法来做到这一点?


我认为这实际上非常干净。它是可读的,并且你说它功能正常。只要实现对消费者隐藏,我就不会担心挤出最后的改进。

如果您过度执行此操作(例如每个事件数百次执行),我会考虑将实现从 UrlEncode/UrlDecode 中取出,并将它们相互流式传输,以通过消除字符串拆分/连接的需要来提高性能,但是无论如何,测试都必须证明这一点,而且绝对不会是“干净的”:-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 url 从 utf-8 编码重新编码为 iso-8859-1 编码 的相关文章

随机推荐