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 相关文章推荐
qq悬浮代码(兼容各个浏览器)
Jan 29 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
May 02 Javascript
jQuery Migrate 1.1.0 Released 注意事项
Jun 14 Javascript
[原创]推荐10款最热门jQuery UI框架
Aug 19 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
Apr 13 Javascript
JavaScript触发onScroll事件的函数节流详解
Dec 14 Javascript
JavaScript之Map和Set_动力节点Java学院整理
Jun 29 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
Dec 28 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
Apr 24 Javascript
基于Vue和Element-Ui搭建项目的方法
Sep 06 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
Nov 26 Javascript
Vue实现动态查询规则生成组件
May 27 Vue.js
日期处理的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+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
javascript 类定义的4种方法
2009/09/12 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
javascript时区函数介绍
2012/09/14 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
React和Vue中监听变量变化的方法
2018/11/14 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
python类继承用法实例分析
2014/10/10 Python
Python的动态重新封装的教程
2015/04/11 Python
Python模拟百度登录实例详解
2016/01/20 Python
OpenCV实现人脸识别
2017/04/07 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
提升Python程序性能的7个习惯
2019/04/14 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
澳大利亚正品化妆品之家:Cosmetic Capital
2017/07/03 全球购物
jQuery treeview树形结构应用
2021/03/24 jQuery
设计毕业生简历中的自我评价
2013/10/01 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
公安学专业求职信
2014/07/27 职场文书
师德师风自我评价范文
2014/09/11 职场文书
统招统分证明
2015/06/23 职场文书
导游词之无锡古运河
2019/11/14 职场文书