问题描述

我们在对接第三方系统的时候通常需要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. POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3790 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你 ...

  2. ArcGIS中实现指定面积蜂窝(正六边形)方法

    本篇博文为博主(whgiser)原创,转载请注明. 空间聚集研究中,地理尺度大多数都是基于格网构建的,只需fishnet下就行了.也常有使用社区.交通小区(TZ)作为研究单元的.直到发现蜂窝网络做出的 ...

  3. 小白的Python之路 day5 logging模块

    logging模块的特点及用法 一.概述 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你 ...

  4. J.U.C atomic AtomicInteger解析

    很多情况下我们只是需要简单的,高效,线程安全的递增递减方法.注意,这里有三个条件:简单,意味着程序员尽可能少的底层或者实现起来比较简单:高效,意味着耗用资源要少,程序处理速度要快: 线程安全也非常重要 ...

  5. vue不是内部或外部命令,配置一个Path系统变量就可以解决

    作为一个vue小白,最近为vue安装真是操碎了心.无论怎么查找网上的教程,还是解决不了"vue不是内部或外部的命令"诸如此类的问题.好在功夫不负有心人,终于在多次的试验下,成功解决 ...

  6. IronFort---基于Django和Websocket的堡垒机

    WebSSH有很多,基于Django的Web服务也有很多,使用Paramiko在Python中进行SSH访问的就更多了.但是通过gevent将三者结合起来,实现通过浏览器访问的堡垒机就很少见了.本文将 ...

  7. jq dom操作

    下面介绍我在网络上找的JQUERY的父,子,兄弟节点查找方法 jQuery.parent(expr) 找父亲节点,可以传入expr进行过滤,比如$("span").parent() ...

  8. 理解maven的核心概念

    原文出处:http://www.cnblogs.com/holbrook/archive/2012/12/24/2830519.html 好久没进行java方面的开发了,最近又完成了一个java相关的 ...

  9. maven-assembly-plugin插件的使用方法

    一. Assembly 是什么意思? 二. maven-assembly-plugin是什么? 它是maven中针对打包任务而提供的标准插件. 三. maven-assembly-plugin插件的作 ...

  10. Spring中Quartz的配置及corn表达式

    Quartz可以用来执行任务调度功能,如间隔一定时间调用执行任务.用起来还是蛮方便的.只要将你要调用的类配置到Spring配置文件即可. 在Spring的配置文件中配置Quartz. <!-- ...