美文网首页
关于浏览器地址栏中文编码的坑

关于浏览器地址栏中文编码的坑

作者: 城南码农 | 来源:发表于2017-11-29 20:07 被阅读0次
问题:

今天调用第三方接口时,参数,签名啥的都计算好之后需要重定向过去。直接在浏览器输入地址是Ok的,redirect(url)却无法通过签名

原因:

浏览器会对url中的中文进行编码,而redirect并不会。导致重定向的时候没有把url中的中文参数传过去。

解决:

1.需要确认参与签名的参数是否需要编码.(一般不需要)
2.需要的话就需要分别在计算签名和拼接url之前分别对中文参数Encoder
3.不需要的话就直接在拼接url参数时编码 (我遇到的是这种)

实例:
for (String key : orderKeys
                ) {
            if ("Nickname".equals(key)){
                //对中文参数编码
                orderUrl += "&" + key + "=" + URLEncoder.encode(order.getString(key),"utf-8");
            }else {
                orderUrl += "&" + key + "=" + order.getString(key);
            }
        }

最后,重定向的url看起来像这样.

http://**.****.com/pages/cityparking/yitian?sign=88be4baa0212df8458c67210759ff8f1&****&Mobile=155******30&Nickname=**%90%E4%BF%8A%E4%BC%9F

相关文章

网友评论

      本文标题:关于浏览器地址栏中文编码的坑

      本文链接:https://www.haomeiwen.com/subject/blvpbxtx.html