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 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
ExtJS Window 最小化的一种方法
Nov 18 Javascript
js实现表格字段排序
Feb 19 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
Apr 04 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
Jun 04 Javascript
Backbone.js的一些使用技巧
Jul 01 Javascript
Bootstrap开发实战之第一次接触Bootstrap
Jun 02 Javascript
Node.js 文件夹目录结构创建实例代码
Jul 08 Javascript
js实现带缓动动画的导航栏效果
Jan 16 Javascript
javascript history对象详解
Feb 09 Javascript
JavaScript继承与多继承实例分析
May 26 Javascript
apicloud拉起小程序并传递参数的方法示例
Nov 21 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
织梦模板标记简介
2007/03/11 PHP
认识并使用PHP超级全局变量
2010/01/26 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
PHP中JSON的应用技巧
2015/10/10 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
VueRouter导航守卫用法详解
2017/12/25 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
python属于哪种语言
2020/08/16 Python
Python日志器使用方法及原理解析
2020/09/27 Python
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
建筑工程管理专业自荐信范文
2013/12/28 职场文书
迟到检讨书5000字
2014/01/31 职场文书
个人作风剖析材料
2014/02/02 职场文书
工作迟到检讨书
2014/02/21 职场文书
美容院店长岗位职责
2014/04/08 职场文书
小学生环保倡议书
2014/05/15 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
财政局长个人总结
2015/03/04 职场文书
工程款申请报告
2015/05/15 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python
Python中re模块的元字符使用小结
2022/04/07 Python