js对字符串进行编码的方法总结(推荐)


Posted in Javascript onNovember 10, 2016

在用javascript对URL字符串进行编码中,虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤。

但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问题。

例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是UTF-8),使用escape()转换传输中文字串就会出现乱码问题。

以下是JS下对URL进行编/解码的各种方法:

1、escape 方法:返回一个可在所有计算机上读取的编码 String 对象。

function escape(charString : String) : String

不会被此方法编码的字符: @ * / +

说明:escape 方法返回一个包含 charstring 内容的字符串值(Unicode 格式)。所有空格、标点、

重音符号以及任何其他非 ASCII 字符都用 %xx 编码替换,其中 xx 等于表示该字符的十六进制数。

例如,空格返回为“%20”。(字符值大于 255 的字符以 %uxxxx 格式存储。)

注意:escape 方法不能用来对“统一资源标识符”(URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。

2、encodeURI 方法:返回编码为有效的统一资源标识符 (URI) 的字符串。

function encodeURI(URIString : String) : String

不会被此方法编码的字符:! @ # $ & * ( ) = : / ; ? + '

说明:encodeURI 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用

encodeURIComponent 对这些字符进行编码。

3、encodeURIComponent 方法:返回编码为统一资源标识符 (URI) 的有效组件的字符串。

function encodeURIComponent(encodedURIString : String) : String

不会被此方法编码的字符:! * ( ) '

说明:encodeURIComponent 方法返回一个已编码的 URI。如果将编码结果传递给decodeURIComponent,则将返回初始的字符串。因为 encodeURIComponent 方法将对所有字符编码,

请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,则其中的斜杠也将被编码,这样,当该字符串作为请求发送到 Web 服务器时它将是无效的。如果字符串中包含多个 URI 组件,请使用 encodeURI 方法进行编码。

4、unescape 方法:从用 escape 方法编码的 String 对象中返回已解码的字符串。

function unescape(charString : String) : String

说明:unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的

字符都用 ASCII 字符集当中等效的字符代替。(以 %uxxxx 格式(Unicode 字符)编码的字符用十六

进制编码 xxxx 的 Unicode 字符代替。)

注意:unescape 方法不应用于解码“统一资源标识符”(URI)。请改用 decodeURI 和 decodeURIComponent 方法。

5、decodeURI 方法:返回一个已编码的统一资源标识符 (URI) 的非编码形式。

function decodeURI(URIstring : String) : String

decodeURIComponent 方法:返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。

function decodeURIComponent(encodedURIString : String) : String

BTW:C#中对URL编码的方法。。。

编码:Server.UrlEncode(string)

解码:Server.UrlDecode(string) 前面三种客户端编码都可以用这个方法在后台解码。

以上就是小编为大家带来的js对字符串进行编码的方法总结(推荐)全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
javascript setTimeout和setInterval 的区别
Dec 08 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
Apr 26 Javascript
jQuery实现预加载图片的方法
Mar 17 Javascript
jQuery实现的导航下拉菜单效果示例
Sep 05 Javascript
深入理解Webpack 中路径的配置
Jun 17 Javascript
JavaScript用200行代码制作打飞机小游戏实例
Jun 21 Javascript
React Native自定义控件底部抽屉菜单的示例
Feb 08 Javascript
Angular使用操作事件指令ng-click传多个参数示例
Mar 27 Javascript
Vue中的Props(不可变状态)
Sep 29 Javascript
微信小程序实现评论功能
Nov 28 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
Nov 13 Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 Javascript
EasyUI 结合JS导出Excel文件的实现方法
Nov 10 #Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
Nov 10 #Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
Nov 10 #Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
Nov 10 #Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
Nov 10 #Javascript
微信小程序 删除项目工程实现步骤
Nov 10 #Javascript
实现easyui的datagrid导出为excel的示例代码
Nov 10 #Javascript
You might like
将时间以距今多久的形式表示,PHP,js双版本
2012/09/25 PHP
PHP页面中文乱码分析
2013/10/29 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
JS学习之一个简易的日历控件
2010/03/24 Javascript
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
Python 数据处理库 pandas进阶教程
2018/04/21 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
selenium自动化测试入门实战
2020/12/21 Python
《草虫的村落》教学反思
2014/02/16 职场文书
物流管理毕业生自荐信范文
2014/03/15 职场文书
安全生产月标语
2014/10/07 职场文书
2016新年慰问信范文
2015/03/25 职场文书