js urlencode 20 php,js实现php函数urlencode

本文介绍了php函数urlencode的js实现方法并比较js和php各编码函数的区别。 通常form表单的enctype类型为 application/x-www-form-urlencoded, 当表单提交后,提交的数据自动被编码, 规则为 除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两

本文介绍了php函数urlencode的js实现方法并比较js和php各编码函数的区别。

通常form表单的enctype类型为 application/x-www-form-urlencoded, 当表单提交后,提交的数据自动被编码, 规则为" 除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。", php的urlencode函数与其功能相同。

js编码方法:escape, encodeURI, encodeURIComponent。

escape可以对大多数符号进行编码,但是对unicode字符无效。

php编码方法:urlencode, rawurlencode, htmlentities。

urlencode和rawurlencode唯一的区别是对空格的编码方式不同,rawurlencode遵循RFC 1738编码将空格转换为 %20。

如何用js实现php的urlencode功能, 网上流传着一段js和vbscript混写的代码,通用性不好,另找到国外一高人写的, 经测试与urlencode相同。

test.jsp?url=http%3A%2F%2Fcommon.cnblogs.com%2Fimages%2Fcopycode.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fdodott%2Farticle%2Fdetails%2F24489701

test.jsp?url=http%3A%2F%2Fimages.cnblogs.com%2FOutliningIndicators%2FExpandedBlockStart.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fdodott%2Farticle%2Fdetails%2F24489701代码

1 functionURLEncode (clearString) {2 varoutput='';3 varx=0;4 clearString=clearString.toString();5 varregex=/(^[a-zA-Z0-9-_.]*)/;6 while(x1&&match[1]!='') {9 output+=match[1];10 x+=match[1].length;11 }else{12 if(clearString.substr(x,1)=='') {13 //原文在此用 clearString[x] == ' ' 做判断, 但ie不支持把字符串当作数组来访问,14 //修改后两种浏览器都可兼容15 output+='+';16 }17 else{18 varcharCode=clearString.charCodeAt(x);19 varhexVal=charCode.toString(16);20 output+='%'+( hexVal.length<2?'0':'')+hexVal.toUpperCase();21 }22 x++;23 }24 }25 returnoutput;26 }

test.jsp?url=http%3A%2F%2Fcommon.cnblogs.com%2Fimages%2Fcopycode.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fdodott%2Farticle%2Fdetails%2F24489701

注:上面的代码引自 http://cass-hacks.com/articles/code/js_url_encode_decode/

下面附上js和php几种编码方法对特殊符号的编码对照表:

Input

JavaScript

PHP

escape

encodeURI

encodeURIComponent

urlencode

rawurlencode

htmlentities

%20

%20

%20

+

%20

!

%21

!

!

%21

%21

!

@

@

@

%40

%40

%40

@

#

%23

#

%23

%23

%23

#

$

%24

$

%24

%24

%24

$

%

%25

%25

%25

%25

%25

%

^

%5E

%5E

%5E

%5E

%5E

^

&

%26

&

%26

%26

%26

&

*

*

*

*

%2A

%2A

*

(

%28

(

(

%28

%28

(

)

%29

)

)

%29

%29

)

-

-

-

-

-

-

-

_

_

_

_

_

_

_

=

%3D

=

%3D

%3D

%3D

=

+

+

+

%2B

%2B

%2B

+

:

%3A

:

%3A

%3A

%3A

:

;

%3B

;

%3B

%3B

%3B;

;

.

.

.

.

.

.

.

"

%22

%22

%22

%22

%22

"

'

%27

'

'

%27

%27

'

\

%5C

%5C

%5C

%5C

%5C

\

/

/

/

%2F

%2F

%2F

/

?

%3F

?

%3F

%3F

%3F

?

<

%3C

%3C

%3C

%3C

%3C

<

>

%3E

%3E

%3E

%3E

%3E

>

~

%7E

~

~

%7E

%7E

~

[

%5B

%5B

%5B

%5B

%5B

[

]

%5D

%5D

%5D

%5D

%5D

]

{

%7B

%7B

%7B

%7B

%7B

{

}

%7D

%7D

%7D

%7D

%7D

}

`

%60

%60

%60

%60

%60

`

上表引自 http://www.the-art-of-web.com/javascript/escape/

另一个非常优秀的urlencode和urldecode函数

test.jsp?url=http%3A%2F%2Fcommon.cnblogs.com%2Fimages%2Fcopycode.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fdodott%2Farticle%2Fdetails%2F24489701

test.jsp?url=http%3A%2F%2Fimages.cnblogs.com%2FOutliningIndicators%2FExpandedBlockStart.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fdodott%2Farticle%2Fdetails%2F24489701代码

1 varUrl={2 3 //public method for url encoding4 encode :function(string) {5 returnescape(this._utf8_encode(string));6 },7 8 //public method for url decoding9 decode :function(string) {10 returnthis._utf8_decode(unescape(string));11 },12 13 //private method for UTF-8 encoding14 _utf8_encode :function(string) {15 string=string.replace(/\r\n/g,"\n");16 varutftext="";17 18 for(varn=0; n127)&&(c<2048)) {26 utftext+=String.fromCharCode((c>>6)|192);27 utftext+=String.fromCharCode((c&63)|128);28 }29 else{30 utftext+=String.fromCharCode((c>>12)|224);31 utftext+=String.fromCharCode(((c>>6)&63)|128);32 utftext+=String.fromCharCode((c&63)|128);33 }34 35 }36 37 returnutftext;38 },39 40 //private method for UTF-8 decoding41 _utf8_decode :function(utftext) {42 varstring="";43 vari=0;44 varc=c1=c2=0;45 46 while( i191)&&(c<224)) {55 c2=utftext.charCodeAt(i+1);56 string+=String.fromCharCode(((c&31)<<6)|(c2&63));57 i+=2;58 }59 else{60 c2=utftext.charCodeAt(i+1);61 c3=utftext.charCodeAt(i+2);62 string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));63 i+=3;64 }65 66 }67 68 returnstring;69 }70 71 }

test.jsp?url=http%3A%2F%2Fcommon.cnblogs.com%2Fimages%2Fcopycode.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fdodott%2Farticle%2Fdetails%2F24489701

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET CORE在ubuntu1604上运行

本文主要描述.NET CORE在Ubuntu上“自包含应用”不一来.NET SDK发布&#xff08;类似于golang的方式&#xff09; 1.用rider或者直接用dotnet new方式创建一个项目&#xff1b;可以看到产生了两个文件 dotnet new 会创建一个最新的 project.json 文件&#xff0c;其中包含生成控…

php代码审计靶场,代码审计 | Wavsep靶场审计防御

—————— 昨日回顾 ——————红日安全出品|转载请注明来源文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用&#xff0c;任何人不得将其用于非法用途以及盈利等目的&#xff0c;否则后果自行承担&#xff01;(来源&#xff1a;红日安全)—————— ——…

Python 爬虫抓取代理IP,并检测联通性

帮朋友抓了一些代理IP&#xff0c;并根据测试联的通性&#xff0c;放在了不通的文件夹下。特将源码分享 注意&#xff1a; 1&#xff0c;环境Python3.5 2&#xff0c;安装BeautifulSoup4 requests 代码如下: 123456789101112131415161718192021222324252627282930313233343536…

php gps坐标转换经纬度,GPS坐标(经纬度转换xy坐标算法)

我用GPS-DG16测得某地的经纬度&#xff0c;然后想将该经纬度转换为80坐标系的经纬。1.看你的精度要求&#xff0c;如果厘米级的&#xff0c;则需要至少3个已知点&#xff0c;这3个点上要有80坐标系的经纬度&#xff0c;另外你再去用gps-dg16采集这三个点的wgs84经纬度&#xff…

java初始化顺序

原文地址http://blog.sina.com.cn/s/blog_4cc16fc50100bjjp.html对于静态变量、静态初始化块、变量、初始化块、构造器&#xff0c;它们的初始化顺序依次是&#xff08;静态变量、静态初始化块&#xff09;>&#xff08;变量、初始化块&#xff09;>构造器。我们也可以通…

php审批流设计思路,审批流设计器-字段说明

1.允许转发&#xff1a;勾选&#xff0c;则在信息中心处理此审批动作对应的待处理任务时&#xff0c;可以将此任务转发给其他用户&#xff1b;不勾选&#xff0c;则在信息中心的待处理任务不支持转发功能&#xff0c;点击转交提示&#xff1a;审批动作设置为不允许转发。2.允许…

第一百二十六节,JavaScript,XPath操作xml节点

第一百二十六节&#xff0c;JavaScript&#xff0c;XPath操作xml节点 学习要点&#xff1a; 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段&#xff0c;对比之前使用标准DOM去查找XML中的节点方式&#xff0c;大大降低了查找难度&#xff0c;方便…

matlab 控制实验指导,智能控制系统-实验指导书-实验一-BP算法的MATLAB实现

实验一、BP算法的MATLAB实现一、实验目的1、了解MATLAB集成开发环境2、了解MATLAB编程基本方法3、加深对&#xff22;&#xff30;算法的理解和掌握二、实验内容1、MATLAB基本指令和语法。2、&#xff22;&#xff30;算法的MATLAB实现三、实验步骤1、熟悉MATLAB开发环境2、输入…

电力电子技术 matlab仿真指导,在_电力电子技术_课程教学中展开Matlab仿真训练_唐贤伦...

教学改革广角中国电力教育2009年10月上 总第146期 “电力电子技术”是电气工程及其自动化等专业的重要专业基础课&#xff0c;也是实用性、工程性和综合性很强的课程。作为自动化、电气工程及其自动化等专业的学生&#xff0c;学好这门课程将为后续专业课的学习和今后的工作打下…

Python补充01 序列的方法

作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01; 在快速教程中&#xff0c;我们了解了最基本的序列(sequence)。回忆一下&#xff0c;序列包含有定值表(tuple)和表(list)。此外&#xff0c;字符串…

java socketchannel api,SocketChannel API

Netty是当前非常流行的网络通讯框架&#xff0c;当程序对网络数据处理时&#xff0c;需要保证高并发和高可靠&#xff0c;底层就可以用Netty支撑。本套课程详细讲解了Netty核心技术点&#xff0c;同时进行底层机制和源码剖析&#xff0c;并编写了大量的应用实例。通过学习可以快…

CLR via C# 阅读 笔记

初读  CLR Via C# 有一些 名词需要记忆&#xff1a; 1、CLR: Common Language Runtime (公共语言运行时) 可有多种编程语言使用的Runtime. 其核心功能是&#xff1a; 内存管理、 程序集加载、 安全性、 异常处理和线程同步等&#xff1b; 2、 Managed Module (托管模块) 托管模…

php异步轮询如何实现,深入剖析JavaScript异步之事件轮询

本篇文章给大家带来的内容是关于深入剖析JavsScript异步之事件轮询&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。JavsScript 是一门单线程的编程语言&#xff0c;这就意味着一个时间里只能处理一件事&#xff0c;也就是说 …

ECMAScript 实现继承的几种方式

1. 原形链 function Father() { this.fatherName "licus"; } function Children() { this.chidrenName "king"; } Children.prototype new Father(); 2.借用构造函数 function Father() { this.fatherName "licus"; } function Children() {…

微信小程序php实现登陆的代码,微信小程序实现微信登录

步骤&#xff1a;1.调用wx.login得到code返回的结果示例&#xff1a;{code:"051nI5Pa1XJkDs0773Pa1OWYOa1nI5PF"errMsg:"login:ok"}2.拿code换取session_key与openid这里使用服务端来请求&#xff0c;以php为例$code $this->input->post(code);$jso…

《C++ Primer Plus(第六版)》(25)(第十三章 类继承 笔记)

1.派生类构造函数的要点: 首先创建基类对象; 应通过成员初始化列表将基类的初始化信息传递给基类的构造函数; 派生类构造函数应初始化新增的数据成员 2.首先执行派生类的析构函数,然后自动调用基类的析构函数. 3.基类指针可以在不进行显式类型转换的情况下指向派生类对象,基类引…

php实际应用小例子,PHP4实际应用经验篇(6)

现在&#xff0c;你已经明白PHP允许你嵌套条件语句。然而&#xff0c;如果你再看看那个用来示范此概念的例子时你将同意那是既复杂又令人感到可怕。--------------------------------------------------------------------------------if($day"Thursday"){if($time&q…

electron知识点

1.打开chrome开发工具栏&#xff1a; BrowserWindow.openDevTools(); 转载于:https://www.cnblogs.com/cag2050/p/6227987.html

oracle 12c缩容磁盘组,oracle 表收缩

当使用delete表数据后&#xff0c;空间无法释放&#xff0c;可以使用表收缩释放表空间&#xff1b;注意&#xff1a;当delete表大量数据的时候要注意undo&#xff0c;可以使用&#xff1a;alter table emp nologging; 让其不生产日志一、表的增长方式当表被创建后&#xff0…

php解决与处理网站高并发 大流量访问的方法

方法/步骤 首先&#xff0c;确认服务器硬件是否足够支持当前的流量 普通的P4服务器一般最多能支持每天10万独立IP&#xff0c;如果访问量比这个还要大&#xff0c; 那么必须首先配置一台更高性能的专用服务器才能解决问题 &#xff0c;否则怎么优化都不可能彻底解决性能问题。 …