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相同。
代码
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相关推荐
- (转)js的编码成gb2312的编码函数(URLEncode)
js的编码成gb2312的编码函数(URLEncode) 分类: JavaScript2014-05-15 08:24 776人阅读 评论(0) 收藏 举报 http://blog.csdn.net/ ...
- js的编码成gb2312的编码函数(URLEncode)
擦,以前还没觉得,今天才发现原来在传参数取参数的时候asp.net内部会帮我们给数据编码!而且很无耻的是不能取消不让它自动编码解码. 比如search.aspx?key=中国,在传递过程中会自动先用U ...
- itwangyang - 再次继续卷起来-20 个 JS 封装工具函数
itwangyang - 再次继续卷起来-20 个 JS 封装工具函数 前言 日常开发中,面对各种不同的需求,我们经常会用到以前开发过的一些工具函数,把这些工具函数收集起来,将大大提高我们的开发效率. ...
- Web3.js 0.20.x API 中文版翻译 1
2019独角兽企业重金招聘Python工程师标准>>> 本文首发于深入浅出区块链社区 原文链接:Web3.js 0.20.x API 中文版翻译原文已更新,请读者前往原文阅读 文档原 ...
- 20道JS原理题助你面试一臂之力!
作者:陈煜仑 链接:https://juejin.im/post/5d2ee123e51d4577614761f8 本文针对目前常见的面试题,实现了相应方法的核心原理,部分边界细节未处理.后续也会持续 ...
- 以太坊:Web3.js 0.20 使用说明
web3简介 注意 web3.js 有两个不兼容的版本:0.20.x及1.0beta,1.0对0.20版本做了重构. 本文档是web3.js 0.20.x版本翻译,其对应的官方文档地址在 JavaSc ...
- js进阶高级与ES6,常用函数方法
ES6与高级 2021.9.11 class类的使用 类的本质就是function函数 在ES6中声明类用class关键字 ES6中类没有变量提升,所以必须先定义类,才能实例化对象 类里面的共有属性和 ...
- html+css+js之20个练手小项目(一)
html+css+js之20个练手小项目(一)--Hangman 前言 一.HTML 二.CSS 三.JS 前言 前端新手练习,记录不迷失. 主要练习html和CSS布局以及JS. 来源github, ...
- JS javascript实现url编码和url解码(urlEncode urlDecode)
本文转自:JS javascript实现url编码和url解码(urlEncode urlDecode) 转载请保留. 表单通过get方式提交中文数据时,提交的中文会被转化为类似"%CC% ...
最新文章
- python 深度 视差 计算_开源双目视觉BM算法-Matlab/Python/Javascript
- 企业网络推广之下的“盒马鲜生”新零售逐渐“破圈”而出
- 鸿洋android屏幕适配四部曲-传送门
- java二维数奇数组金字塔_金字塔内发现一组神奇数字 至今无解(图)
- 如何复位一个流的failbit和eofbit
- git clone 代理配置
- 怎么确保一个集合不能被修改
- python编程怎么命名_命名规范-python编程入门系列图文教程 - Python学习网
- 基于umi写一个用户管理CRUD
- html公式输入空格,mathtype怎么在公式里加空格
- 关于微信H5自动播放视频-canvas实现逐帧动画效果加音频
- centos7服务器如何通过trunk模式接入交换机
- 使用Nexus添加jar包到私服里
- 180-爬虫3-自动操作浏览器工具selenium模块的使用
- Nginx服务器读取不到文件的转换方法
- 异常的深入研究与分析
- nginx 基本使用
- 炫龙毁灭者KP2笔记本U盘重装系统方法图文详细教学
- 计算机存储器 控制器 运算器,运算器,控制器,存储器
- windows 恢复误删文件
热门文章
- 爬虫,关于 video 标签 src 带有blob:http的 一些想法
- springboot : Failed to decode downloaded font 和 OTS parsing error
- Python2和Python3的兼容性写法
- c语言函数调用参数调用的太少,浅谈C语言函数调用参数压栈的相关问题
- Mybatis insert返回主键ID
- 学校云计算机室,云计算实训室简介
- 【C语言进阶深度学习记录】十三 C语言中 ++和--操作符
- 关于windows10 CMD 的一些操作
- 项目管理之码云和git
- java判断字符串是否为数字或中文或字母