首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpUtility.UrlEncode不对+这样的字符进行编码

HttpUtility.UrlEncode不对+这样的字符进行编码
EN

Stack Overflow用户
提问于 2016-09-09 20:22:16
回答 1查看 1.6K关注 0票数 0

我有一个加密的字符串,看起来像这样

代码语言:javascript
复制
Pfx32q+xLq4R+VocXy4IC8aQNdmFqdA284THap54Bl4=

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

代码语言:javascript
复制
Pfx32q%2BxLq4R%2BVocXy4IC8aQNdmFqdA284THap54Bl4%3D

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

我们无法指出造成这种情况的真正原因。在调用HttpUtility.UrlEncode方法时,是否存在像+这样的字符不被编码的情况?

EN

回答 1

Stack Overflow用户

发布于 2016-09-09 20:44:43

也有同样的问题。先将加密字符串转换为Base64,然后再转换为UrlEncoded。

代码语言:javascript
复制
    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);
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39411497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档