本文介绍了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相同。

代码

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 }

注:上面的代码引自 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函数

代码

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 }

js urlencode 20 php,js实现php函数urlencode相关推荐

  1. (转)js的编码成gb2312的编码函数(URLEncode)

    js的编码成gb2312的编码函数(URLEncode) 分类: JavaScript2014-05-15 08:24 776人阅读 评论(0) 收藏 举报 http://blog.csdn.net/ ...

  2. js的编码成gb2312的编码函数(URLEncode)

    擦,以前还没觉得,今天才发现原来在传参数取参数的时候asp.net内部会帮我们给数据编码!而且很无耻的是不能取消不让它自动编码解码. 比如search.aspx?key=中国,在传递过程中会自动先用U ...

  3. itwangyang - 再次继续卷起来-20 个 JS 封装工具函数

    itwangyang - 再次继续卷起来-20 个 JS 封装工具函数 前言 日常开发中,面对各种不同的需求,我们经常会用到以前开发过的一些工具函数,把这些工具函数收集起来,将大大提高我们的开发效率. ...

  4. Web3.js 0.20.x API 中文版翻译 1

    2019独角兽企业重金招聘Python工程师标准>>> 本文首发于深入浅出区块链社区 原文链接:Web3.js 0.20.x API 中文版翻译原文已更新,请读者前往原文阅读 文档原 ...

  5. 20道JS原理题助你面试一臂之力!

    作者:陈煜仑 链接:https://juejin.im/post/5d2ee123e51d4577614761f8 本文针对目前常见的面试题,实现了相应方法的核心原理,部分边界细节未处理.后续也会持续 ...

  6. 以太坊:Web3.js 0.20 使用说明

    web3简介 注意 web3.js 有两个不兼容的版本:0.20.x及1.0beta,1.0对0.20版本做了重构. 本文档是web3.js 0.20.x版本翻译,其对应的官方文档地址在 JavaSc ...

  7. js进阶高级与ES6,常用函数方法

    ES6与高级 2021.9.11 class类的使用 类的本质就是function函数 在ES6中声明类用class关键字 ES6中类没有变量提升,所以必须先定义类,才能实例化对象 类里面的共有属性和 ...

  8. html+css+js之20个练手小项目(一)

    html+css+js之20个练手小项目(一)--Hangman 前言 一.HTML 二.CSS 三.JS 前言 前端新手练习,记录不迷失. 主要练习html和CSS布局以及JS. 来源github, ...

  9. JS javascript实现url编码和url解码(urlEncode urlDecode)

    本文转自:JS javascript实现url编码和url解码(urlEncode urlDecode)  转载请保留. 表单通过get方式提交中文数据时,提交的中文会被转化为类似"%CC% ...

最新文章

  1. python 深度 视差 计算_开源双目视觉BM算法-Matlab/Python/Javascript
  2. 企业网络推广之下的“盒马鲜生”新零售逐渐“破圈”而出
  3. 鸿洋android屏幕适配四部曲-传送门
  4. java二维数奇数组金字塔_金字塔内发现一组神奇数字 至今无解(图)
  5. 如何复位一个流的failbit和eofbit
  6. git clone 代理配置
  7. 怎么确保一个集合不能被修改
  8. python编程怎么命名_命名规范-python编程入门系列图文教程 - Python学习网
  9. 基于umi写一个用户管理CRUD
  10. html公式输入空格,mathtype怎么在公式里加空格
  11. 关于微信H5自动播放视频-canvas实现逐帧动画效果加音频
  12. centos7服务器如何通过trunk模式接入交换机
  13. 使用Nexus添加jar包到私服里
  14. 180-爬虫3-自动操作浏览器工具selenium模块的使用
  15. Nginx服务器读取不到文件的转换方法
  16. 异常的深入研究与分析
  17. nginx 基本使用
  18. 炫龙毁灭者KP2笔记本U盘重装系统方法图文详细教学
  19. 计算机存储器 控制器 运算器,运算器,控制器,存储器
  20. windows 恢复误删文件

热门文章

  1. 爬虫,关于 video 标签 src 带有blob:http的 一些想法
  2. springboot : Failed to decode downloaded font 和 OTS parsing error
  3. Python2和Python3的兼容性写法
  4. c语言函数调用参数调用的太少,浅谈C语言函数调用参数压栈的相关问题
  5. Mybatis insert返回主键ID
  6. 学校云计算机室,云计算实训室简介
  7. 【C语言进阶深度学习记录】十三 C语言中 ++和--操作符
  8. 关于windows10 CMD 的一些操作
  9. 项目管理之码云和git
  10. java判断字符串是否为数字或中文或字母