HttpUtility.UrlEncode不编码像+这样的字符

本文关键字:字符 UrlEncode 编码 HttpUtility | 更新日期: 2023-09-27 18:06:32

我有一个加密字符串就像这样

Pfx32q+xLq4R+VocXy4IC8aQNdmFqdA284THap54Bl4=

在加密这个字符串时我们调用HttpUtility.UrlEncode("Pfx32q+xLq4R+VocXy4IC8aQNdmFqdA284THap54Bl4=")将加密的字符串作为参数传递这会返回一个值

Pfx32q%2BxLq4R%2BVocXy4IC8aQNdmFqdA284THap54Bl4%3D

在我的开发系统中,+被替换为%2等,但是当相同的代码在生产服务器上运行时,加号不会被编码,而是保持为+。

我们不能指出到底是什么导致了这种情况。是否有一种情况或情况下,在调用HttpUtility.UrlEncode方法的字符,如+不得到编码?

HttpUtility.UrlEncode不编码像+这样的字符

有同样的问题。首先将加密字符串转换为Base64,然后对其进行UrlEncoded。

    string urlOut = HttpUtility.UrlEncode(Base64Encode("Pfx32q+xLq4R+VocXy4IC8aQNdmFqdA284THap54Bl4="));
    string urlIn = Base64Decode(HttpUtility.UrlDecode(urlOut));
    public static string Base64Encode(string plainText)
    {
        var plainTextBytes = Encoding.UTF8.GetBytes(plainText);
        return Convert.ToBase64String(plainTextBytes);
    }
    public static string Base64Decode(string base64EncodedData)
    {
        var base64EncodedBytes = Convert.FromBase64String(base64EncodedData);
        return Encoding.UTF8.GetString(base64EncodedBytes);
    }