JavaScript中的16进制字符(改进)


Posted in Javascript onNovember 21, 2011

原始的代码:

//将文字转换为16进制 
function textToSix(str) { 
return escape(str).replace(/%/g, function () { 
return "\\"; 
}).toLowerCase(); 
}

改进后的:
//将文字转换为16进制 
function textToHex(str) { 
//escape对0-255以外的unicode值进行编码时输出%u****格式,例如:%u6267%u624b%u6cea%u773c 
//将其中的%替换成\就是十六进制的 
if (typeof str == "string") { 
return escape(str).replace(/%/g, function () { 
return "\\"; 
}).toLowerCase(); 
} else { 
return null; 
} 
}

主要是增加了一个验证是否为字符串的验证。

在完善了这个方法之后,我又觉得是不是要改进下面这个方法:

//将16进制表示为文字 
function sixToText(str) { 
return unescape(str); 
}

本意是将"\unnn"之类的字符转换回文字。其实,只需看看unescape这个方法的原理(工作原理:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 \u00xx 和 \uxxxx 替换这样的字符序列进行解码。来自百度百科的解释)。就会知道我完全是多此一举。因为浏览器是可以解析十六进制的字符的。例如:

在IE9中:

JavaScript中的16进制字符(改进)

在Chrome中:

JavaScript中的16进制字符(改进)

再补充另外一点收获吧。其实在做这个解析被我替换后的字符时,我最初的想法是将"\"这个字符在替换回"%",然后再用unescape这个解码函数来解析字符。然而,当我在我想将"\"替换为"%"却发现了下面的一个比较有意思的现象:像“\”这个字符如果后面没有碰到“t”,"n"之类可以和t结合在一起组成转意字符的话,是会被浏览器忽略的。用实验来验证我的结论吧:

在IE9中调试:

JavaScript中的16进制字符(改进)

在Chrome下调试:

JavaScript中的16进制字符(改进)

在这里定义了一个变量,变量中含有一些平时可能很少出现的字符"\",调试的时候,看看上面的提示了吗,浏览器很智能的忽略掉了特殊位置的字符。因此在将一些看似很平常的字符(例如文件路径等)放在js的变量中,可能输出来的结果并不是预期的。

Javascript 相关文章推荐
JavaScript 继承使用分析
May 12 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
Jun 05 Javascript
使用jquery自定义鼠标样式满足个性需求
Nov 05 Javascript
使用JavaScript实现Java的List功能(实例讲解)
Nov 07 Javascript
Js 正则表达式知识汇总
Dec 02 Javascript
JavaScript构造函数详解
Dec 27 Javascript
JS在onclientclick里如何控制onclick的执行
May 30 Javascript
浅谈javascript中的Function和Arguments
Aug 30 Javascript
js 打开新页面在屏幕中间的实现方法
Nov 02 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
Dec 13 Javascript
vue 中directive功能的简单实现
Jan 05 Javascript
JS中call()和apply()的功能及用法实例分析
Jun 28 Javascript
日期处理的js库(迷你版)--自建js库总结
Nov 21 #Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
Nov 21 #Javascript
页面调用单个swf文件,嵌套出多个方法。
Nov 21 #Javascript
javascript中xml操作实现代码
Nov 21 #Javascript
js调用activeX获取u盘序列号的代码
Nov 21 #Javascript
15个款优秀的 jQuery 图片特效插件推荐
Nov 21 #Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
Nov 21 #Javascript
You might like
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
JavaScript 应用类库代码
2008/06/02 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
Python Socket使用实例
2017/12/18 Python
用Python3创建httpServer的简单方法
2018/06/04 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
大学生毕业求职的自我评价
2013/09/29 职场文书
高级护理专业毕业生推荐信
2013/12/25 职场文书
护士节活动总结
2014/08/29 职场文书
个人自查自纠材料
2014/10/14 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
教师工作态度自我评价
2015/03/05 职场文书
被告代理词范文
2015/05/25 职场文书
React如何创建组件
2021/06/27 Javascript
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫