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…

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

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

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

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

微信小程序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…

JavaScript 函数(作用域以及闭包)

JavaScript 函数&#xff08;作用域以及闭包&#xff09; ・执行环境及作用域 执行环境定义了变量或函数有权访问的其他数据。 每个执行环境都有一个与之关联的变量对象&#xff0c;环境中定义的所有变量或函数都保存在这个对象中&#xff0c; 虽然我们编写的代码无法访问这个对…

《DSP using MATLAB》第6章开始了

看到第6章了&#xff0c;标记一下&#xff0c;全书近一半&#xff0c;继续加油 构建滤波器的三种元件&#xff1a; 下面是函数floor和size的部分帮助截图 转载于:https://www.cnblogs.com/ky027wh-sx/p/6235509.html

codeql php,使用codeql 挖掘 ofcms

前言网上关于codeql的文章并不多&#xff0c;国内现在对codeql的研究相对比较少&#xff0c;可能是因为codeql暂时没有中文文档&#xff0c;资料也相对较少&#xff0c;需要比较好的英语功底&#xff0c;但是我认为在随着代码量越来越多&#xff0c;传统的自动化漏洞挖掘工具的…

php 连接符.,PHP怎么在数字之间添加连接符

PHP实现数字之间添加连接符&#xff0c;我们可以通过PHP中的for循环思想来实现。这里的连接符指的是“-”符号。推荐参考&#xff1a;《PHP教程》那么对于新手来说&#xff0c;可能有一定难度。下面我们就通过简单的代码示例&#xff0c;给大家介绍PHP给数字之间添加连字符的实…

嵌入式linux 时间同步,解决嵌入式Linux中的时区问题

如果说让我做上层软件的工作&#xff0c;我做起来可以得心应手&#xff0c;但是让我做平台方面的工作(系统问题解决、驱动编写、软件移植等工作)&#xff0c;确实不熟悉。所以很多问题都是摸着石头过河&#xff0c;没有经验。许多问题在有经验的朋友那里是小菜一碟&#xff0c;…

bzoj2243

2243: [SDOI2011]染色 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 6753 Solved: 2496[Submit][Status][Discuss]Description 给定一棵有n个节点的无根树和m个操作&#xff0c;操作有2类&#xff1a; 1、将节点a到节点b路径上所有点都染成颜色c&#xff1b; 2、询问节点…

eclipse linux windows 乱码,Ubuntu下Eclipse打开Windows下的工程文件乱码解决办法

Eclipse在Windows下默认使用的是GBK(包括GB2312)编码&#xff0c;而在Linux系统默认使用的是UTF-8编码&#xff0c;并且eclipse编码设置下拉列表不提供GBK编码可选项。如果eclipse打开工程或者文本乱码&#xff0c;基本可以肯定(因为常用的就这两种)这个工程/文本使用的是GBK编…

linux桌面旋转了180度,[多图]回顾每一款默认Ubuntu壁纸

每个默认的Ubuntu壁纸Ubuntu 4.10’Warty Warthog’当人们抱怨Ubuntu发行版中的“ 褐色 ”时&#xff0c;我经常想回到Ubuntu的第一张墙纸&#xff0c;以便他们的意见可以转变为“上下文”。事后看来&#xff0c;这只墙纸完全是一块毫无生气的带有徽标的棕色块。当然&#xff0…

【转】Apache 配置虚拟主机三种方式

Apache 配置虚拟主机三种方式 原文博客http://www.cnblogs.com/hi-bazinga/archive/2012/04/23/2466605.html一、基于IP 1. 假设服务器有个IP地址为192.168.1.10&#xff0c;使用ifconfig在同一个网络接口eth0上绑定3个IP&#xff1a; [rootlocalhost root]# ifconfig eth0:1 1…

linux weblogic 防火墙,本地访问weblogic控制台无反应,关闭linux操作系统防火墙

有时候&#xff0c;我们在Linux操作系统上成功启动了weblogic&#xff0c;也查看了7001端口的状态是开启的。但是访问weblogic控制台没有反应&#xff0c;也没有报错。使用 netstat -ano | grep 7001 查看端口的状态可是访问weblogic控制台&#xff0c;还是没有反应。我们在本地…

fedora linux搜狗输入法,在Fedora 28系统下安装搜狗输入法

以下介绍在Fedora 28系统下安装搜狗输入法&#xff0c;也适用在Fedora 27下的安装&#xff0c;亲测可以。先声明一下&#xff0c;在Fedora 27及以后版本中出现的输入框候选词界面变形但不影响使用。第一步&#xff1a;安装fzug软件源具体方法如下&#xff1a;1.添加 FZUG 源Fed…

linux reboot命 过程,IDRAC安装dell服务器操作系统(linux or windows),用到生命周期管理器...

1、首先给服务器装上idrac模块&#xff0c;然后给idrac配置一个远程IP&#xff0c;用作管理2、在web界面输入IP&#xff0c;弹出以下界面&#xff0c;输入账号密码登录3、认证成功后&#xff0c;点击虚拟控制台启动4、进入如下界面&#xff0c;点击菜单栏的《虚拟介质》&#x…

DroidPlugin插件化开发

360手机助手使用的 DroidPlugin&#xff0c;它是360手机助手团队在Android系统上实现了一种插件机制。它可以在无需安装、修改的情况下运行APK文件,此机制对改进大型APP的架构&#xff0c;实现多团队协作开发具有一定的好处。 它是一种新的插件机制&#xff0c;一种免安装的运行…

io wait linux,另辟蹊径-诊断工具之 IO wait

导读最近在做日志的实时同步&#xff0c;上线之前是做过单份线上日志压力测试的&#xff0c;消息队列和客户端、本机都没问题&#xff0c;但是没想到上了第二份日志之后&#xff0c;问题来了&#xff1a;1、问题&#xff1a;集群中的某台机器 top 看到负载巨高&#xff0c;集群…