问题描述

我们在对接第三方系统的时候通常需要get或post来传输数据,但此时如果参数中存在&% #*!包括空格等特殊符号的时候就无法正常请求具体表现在参数获取不正确或者获取不到参数,甚至有时候会直接截断发送的请求。

解决方法

特殊字符在url中不能正常传输我们首先肯定是考虑对其进行URL编码,不同语言url编码封装的方法可能有所不同,因为我这里是使用c# 后台跟第三方系统对接 ,所以直接考虑c# 类库封装的方法了

c#中有三种url编码的方式分别是

1  HttpUtility.UrlEncode

2  Server.UrlEncode

3  Uri.EscapeUriString

这里就不详细对比它们的优缺点了  ,因为这里我目的在于问题的解决和记录,所以只描述一下过程中遇到的问题和该注意的地方,

1 首先HttpUtility.UrlEncode  对空格的处理是使其变成+ 的符号比如你有一个这样的字符串 : "下单时间:2017/3/28 23:05:51"  注意其中有一个空格对应生成的字符串是:"%e4%b8%8b%e5%8d%95%e6%97%b6%e9%97%b4%3a2017%2f3%2f28+23%3a05%3a51"  ,空格变成了+符号,所以传输的时候应该做相应的处理,

我这里的解决方法是把编码后的字符串中的+符号再替换成对应的编码格式, 如utf8  空格应该编码成  %20,所以只要把+符号替换成 %20,

2 第二要注意的就是Uri.EscapeDataString 虽然没有所有的空格变加号的问题但是被编码的字符串有长度限制,限制的长度32766个字符  超过则会抛出异常  ,其实用方式如下

以上两种方式默认编码都是utf8 编码当然也可以换成其它格式。

博主网址:http://www.siyouku.cn

本文永久更细地址:http://siyouku.cn/article/6820.html

URL中特殊符号的处理的更多相关文章

  1. url中特殊符号转换

    特殊符号 url中显示 空格 %20 & %26

  2. 记一次400错误引发的血案(URL中特殊符号的转义/400 bad request错误)

    django+nginx+uwsgi部署的站点访问某个URL时发生了400 bad request的错误,而使用django自带的开发版的web server时没有遇到此问题.初步判断是nginx或u ...

  3. url中常见符号说明

    如:http://10.1.1.71:9999/auditcenter/api/v1/auditPlanList?pageSize=20&page=1 ?:分隔实际的url和参数 & ...

  4. jdbc URL中的各个参数详解

    常用的有两个,一个是gjt(Giant JavaTree)组织提供的mysql驱动,其JDBC Driver名称(Java类名)为:org.gjt.mm.mysql.Driver 详情请参见网站:ht ...

  5. url中的特殊符号含义

    1. # 10年9月,twitter改版.一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为http://twitter.com/username改版后,就变 ...

  6. url地址中 "&" "/"等符号的转义处理(转)

    URL出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,如何是好? 解决办法:将这些字符转化成服务器可以识别的字符,对应关系如下: URL中的特殊字 ...

  7. URL中一些特殊符号的替代符

    下表中列出了一些URL特殊符号及编码 十六进制值 1.+ URL 中+号表示空格 %2B 2.空格 URL中的空格可以用+号或者编码 %20 3./ 分隔目录和子目录 %2F 4.? 分隔实际的 UR ...

  8. 你知道url中的特殊符号含义么

    1.# #代表网页中的一个位置.其右面的字符,就是该位置的标识符.比如,http://www.example.com/index.html#print就代表网页index.html的print位置.浏 ...

  9. vue中去掉url地址栏中的#符号

    要去掉vue中访问地址中的#符号可以在路由器中设置路由模式为history: export default new Router({ mode:'history', routes: [ { path: ...

随机推荐

  1. Actor-ES框架:Ray

    并发 1. 并发和并行 并发:两个或多个任务在同一时间段内运行.关注点在任务分割. 并行:两个或多个任务在同一时刻同时运行.关注点在同时执行. 本文大多数情况下不会严格区分这两个概念,默认并发就是指并 ...

  2. UE4 AsnycTask

    使用AsnycTask可以将制定代码放在指定线程中执行,例如更新文理必须放在游戏线程. AsyncTask(ENamedThreads::GameThread, [=](){      updateT ...

  3. PHP中的GetType和SetType

    大部分的可变函数都是用来测试一个函数的类型的.PHP中有两个最常见的函数,分别是gettype()和settype().这两个函数具有如下所示的函数原型,通过他们可以获得要传递的参数和返回的结果. s ...

  4. phpstorm ctrl+shift+F键不管用,不弹出搜索弹框

    般热键冲突搜狗默认简繁切换组合键位ctrl+shift+F故outlook2011按三建且失效应该能看搜狗输入状态简繁变搜狗设置按键-取消选简繁切换热键即在任务栏的语言地方点击一下再点击语言首选项.进 ...

  5. 常用排序算法java实现

    写在前面:纸上得来终觉浅.基本排序算法的思想,可能很多人都说的头头是到,但能说和能写出来,真的还是有很大区别的. 今天整理了一下各种常用排序算法,当然还不全,后面会继续补充.代码中可能有累赘或错误的地 ...

  6. Mac OS启动服务优化高级篇

    一.Mac下的启动服务主要三个可配置的地方 1.系统偏好设置->帐户->登陆项 2./System/Library/StartupItems 和 /Library/StartupItems ...

  7. ABB中断设定

    简介: 中断是程序定义事件,通过中断编号识别.中断发生在中断条件为真时.中断不同于其他错误,前者与特定消息号位置无直接关系(不同步).中断会导致正常程序执行过程暂停,跳过控制,进入软中断程序. 即使机 ...

  8. linux_系统调优

    linux如何调优? 1. 关闭SELLinux功能,美国国家安全局对于强制访问控制实现,生产场景也是关闭 cat /etc/selinux/config | grep '^SELINUX=' # 查 ...

  9. Django_404_403_500页面处理

    需求: 进入上线环境,用户并没有权力知道出错信息,那我们需要对不同的出错信息返回不同页面提示,提升用户的体验 问题原因: 生产环境下,用户输入的url地址不正确,没有对应的view去处理这个url请求 ...

  10. js禁止开发者工具

    $(document).keydown(function() { return key(arguments[0]) }); function key(e) { //f12 var keynum; if ...