使用urlencode这个函数进行格式化,urlencode函数会把空格编码为为:+

当然,前端在接收时可以解码后进行替换 + 为空格的方式处理。

但是这样就多做了一步,很麻烦,有的时候我们的数据接口是开发给第三方或者其他使用的,他们在处理中不一定完全按照这样的思路来做。

解决方案:

使用rawurlencode

在PHP中,urlencode把空格编码为+号,rawurlencode把空格编码为%

urlencode和rawurlencode两个方法在处理字母数字,特殊符号,中文的时候结果都是一样的,唯一的不同是对空格的处理,urlencode处理成“+”,rawurlencode处理成“%”。
 $str = 'web php.程序员 参数';

 //urlencode 和 rawurlencode 的区别

 $str1 = urlencode($str);

 $str2 = rawurlencode($str);

 $str3 = urldecode($str1);

 $str4 = rawurldecode($str2);

 echo $str1."<br/>";

 echo $str2."<br/>";

 echo $str3."<br/>";

 echo $str4."<br/>";

  

()urlencode 函数: 

返回字符串,此字符串中除了 - _ . 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。 

此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与application/x-www-form-urlencoded的媒体类型编码方式一样。 

()rawurlencode 函数: 

返回字符串,此字符串中除了 - _ . 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。 

这是在 » RFC  中描述的编码,是为了保护原义字符以免其被解释为特殊的 URL 定界符,同时保护 URL 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱。 

总结如下: 

. 数字、大小写字母都不编码。 

. 减号、点号、下划线 三个不编码。 

. rawurlencode 比 urlencode 多编码一个加号("+")。 
 

PHP使用urlencode对中文编码时空格、加号的问题的更多相关文章

  1. php使用urlencode对中文编码而引出的问题:urlencode和rawurlencode的区别

    事件背景: 之前做h5小游戏,需要后端输出用户的相关信息给前端,输出的内容有:用户id,用户昵称等字段,使用get方式传参.后端使用PHP语言对中文昵称进行格式化编码,使用的是常用的urlencode ...

  2. urlencode遇到中文编码问题

    urlencode并不会改变输入的编码格式, 默认会将中文输出为 gbk 编码, 类似的, quote 会对中文进行 gbk 编码 不过, 当遇到嵌套多层的字典时, 问题就来了, 中文会被 utf8 ...

  3. jsoup使用样式class抓取数据时空格的处理

    最近在研究用android和jsoup抓取小说数据,jsoup的使用可以参照http://www.open-open.com/jsoup/;在抓纵横中文网永生这本书的目录内容时碰到了问题, 永生的书简 ...

  4. sql 存储时空格转成问号问题

    最近做系统,从邮件中导出邮件,上传到系统中,遇到一个奇葩的问题,如下: 通过本地文件看,文件名中是一个空格,上传至数据库后,展示就变成了问号,究其原因,发现是一个特殊字符导致: 最近认真去查了一下这个 ...

  5. 定位class时空格注意

    class属性中间的空格并不是空字符串,那是间隔符号,表示的是一个元素有多个class的属性名称,那定位的时候取其中的一个就行(并且要唯一) Selenium2+python自动化73-定位的坑:cl ...

  6. php处理url的rawurlencode:可处理空格加号

    (PHP 4, PHP 5, PHP 7) rawurlencode - 按照 RFC 3986 对 URL 进行编码 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号( ...

  7. 不同浏览器使用Content-disposition时filename带空格的处理方式不同

    最近在做项目中遇到一个问题,纠结了好久才找到原因.起因:通过MIME的扩展Content-disposition来实现在客户端保存附加文件(快捷方式).问题:在chrome和IE8+下一切都很和谐,浏 ...

  8. 转载: 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)

    最近在做一个下载工具时,发现CSDN上的资源下载时竟然没有被拦截到,经过分析,终于有了一个发现,解决了我之前做文件下载时的乱码问题,所以转载这篇释疑文章,希望有人可以看到,可以从中得到帮助,也用来备忘 ...

  9. WebUtility(提供在处理 Web 请求时用于编码和解码 URL 的方法。)

    public static string UrlEncode( string str ) UrlEncode(String) 方法可用来编码整个 URL,包括查询字符串值. 如果没有编码情况下,如空格 ...

随机推荐

  1. Linux-KVM虚拟化

    kvm安装 1.在宿主机上准备好yum(只需要本地镜像yum就可以) 2.查看CPU是否支持inter或AMD的虚拟技术 # cat /proc/cpuinfo |grep -E "vmx| ...

  2. 通用权限管理系统之权限菜单zTree树的展示及移动的处理方法

    在通用权限管理系统中,有很多数据结构是有父子关系的,如组织机构,部门,权限菜单等,在展示的时候,大多数是通过zTree树的形式展现的,如下: 权限菜单展示 这种数据后台输出比较容易处理,参考如下获取某 ...

  3. P1996 约瑟夫问题-题解(队列??明明是单循环链好吗)

    一如既往的题目传送:     https://www.luogu.org/problemnew/show/P1996 这里不讲数组模拟的方法(毕竟多做点题的模拟功力足以暴力出这道题),而是讲一种单循环 ...

  4. 你不得不用的MAC软件开发工具软件,个个万里挑一

    作为软件行业,尤其是程序员,Mac上都不得不安装一些必备的MAC软件开发工具软件,下面给大家分享一些必装的MAC软件开发工具软件,以备日后之需,有备无患. 其中,包含各种语言的主流 IDE.开发辅助. ...

  5. keepalived 安装及配置

    简介 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat.corosync.pacemaker. 但是它一般不会单独出现, ...

  6. Spring Cloud中关于Feign的常见问题总结

    一.FeignClient接口,不能使用@GettingMapping 之类的组合注解 代码示例: @FeignClient("microservice-provider-user" ...

  7. 使用Docker安装SonarQube

    需先安装docker和docker-compose.见:https://www.cnblogs.com/hackyo/p/9280042.html 在任意目录下新建文件docker-compose.y ...

  8. H5_0005:JS判断域名和时间有效期的方法

    (function () { var n = { c: function (t, e) { //console.log("c"); //把i(15)的d数组转换成字串 for (v ...

  9. OSPFv3实验配置(GNS3)

    实验目的 1. 掌握 OSPFv3(v2) 的配置方法 2. 掌握在帧中继环境下 OSPFv3 (v2)的配置方法 3. 掌握 OSPFv3(v2) NSSA 的配置方法 4. 掌握外部路由汇总的配置 ...

  10. Git分支实战入门详细图解

    现在我们模拟一个简单的分支和合并案例,其中工作流可供真实项目借鉴. (1)在master开展工作 (2)为新的需求创建分支 (3)在新的分支上展开工作 这时,你接到一个电话,说项目有一个严重的问题需要 ...