.Net Core 关于 UrlEncode解析差异

最近对接第三方的时候,发现加密验签的时候老是过不去。验证之后发现是urlencode的问题

同一个段文本:[试玩]全民捕鱼电玩城-第16期福豆场累计赢取10福豆(限新)获得0.54元

第三方UrlEncode的结果:

%5B%E8%AF%95%E7%8E%A9%5D%E5%85%A8%E6%B0%91%E6%8D%95%E9%B1%BC%E7%94%B5%E7%8E%A9%E5%9F%8E-%E7%AC%AC16%E6%9C%9F%E7%A6%8F%E8%B1%86%E5%9C%BA%E7%B4%AF%E8%AE%A1%E8%B5%A2%E5%8F%9610%E7%A6%8F%E8%B1%86%28%E9%99%90%E6%96%B0%29%E8%8E%B7%E5%BE%970.54%E5%85%83

c# UrlEncode结果:  (UrlEncoder.Default.Encode 方法)

%5B%E8%AF%95%E7%8E%A9%5D%E5%85%A8%E6%B0%91%E6%8D%95%E9%B1%BC%E7%94%B5%E7%8E%A9%E5%9F%8E-%E7%AC%AC16%E6%9C%9F%E7%A6%8F%E8%B1%86%E5%9C%BA%E7%B4%AF%E8%AE%A1%E8%B5%A2%E5%8F%9610%E7%A6%8F%E8%B1%86(%E9%99%90%E6%96%B0)%E8%8E%B7%E5%BE%970.54%E5%85%83

c# UrlEncode结果:  (System.Web.HttpUtility.UrlEncode 方法)

%5b%e8%af%95%e7%8e%a9%5d%e5%85%a8%e6%b0%91%e6%8d%95%e9%b1%bc%e7%94%b5%e7%8e%a9%e5%9f%8e-%e7%ac%ac16%e6%9c%9f%e7%a6%8f%e8%b1%86%e5%9c%ba%e7%b4%af%e8%ae%a1%e8%b5%a2%e5%8f%9610%e7%a6%8f%e8%b1%86(%e9%99%90%e6%96%b0)%e8%8e%b7%e5%be%970.54%e5%85%83

差异就是c#Encode时。把文本中 (限新) 的括号没解析。而其他encode是解析的
c# 的2种encode方法的区别在于大小写问题,如果是Uncode后进行比对是不影响的。
如果需要在encode时进行比对。一般使用 UrlEncoder.Default.Encode 方法

解决方案:在encode后 Replace一下。手动转换一些特殊字符

  string encodeValue = UrlEncoder.Default.Encode(value)
                          .Replace("+", "%20")
                          .Replace("*", "%2A")
                          .Replace("%7E", "~")
                          .Replace("!", "%21")
                          //.Replace("'", "%27") 可选择性 排除个别
                          .Replace("(", "%28")
                          .Replace(")", "%29");


本文借鉴文章:https://blog.csdn.net/u010690818/article/details/77095142
​​​​​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值