手机版

JavaScript中的十六进制字符(改进)

时间:2021-10-12 来源:互联网 编辑:宝哥软件园 浏览:

的原始代码:复制代码如下: //将文本转换为十六进制函数text tosix(str){ return escape(str)。替换(/%/g,function(){ return ' \ \ ';}).toLowerCase();}改进:复制代码如下: //将文本转换为十六进制函数texttohex(str){//对0-255以外的unicode值进行编码时转义,输出%u****的格式,例如:%u6267%u624b%u6cea%u773c //将其中%替换为%。是十六进制if(str==' string '){ return escape(str)。替换(/%/g,function(){ return ' \ \ ';}).toLowerCase();} else { return null}}主要是增加一个验证,验证是否为字符串。完善了这个方法之后,我觉得有必要对下面的方法进行改进:复制代码如下: //express十六进制作为text函数第六个text(str){ return escape(str);}初衷是将像“\unnn”这样的字符转换回单词。其实只要看看unescape的原理(工作原理:通过找到%xx和% uxxx代表十六进制数)形式的字符序列,将这个字符序列替换为Unicode字符\u00xx和\ uxxx进行解码。解释来自百度百科)。你会知道我完全是多余的。因为浏览器可以解析十六进制字符。比如:在IE9: testChar2IE9

在Chrome:testChar2Chrome

让我们再增加一个收获。实际上,在分析我替换的字符时,我最初的想法是将字符“\”替换为“%”,然后使用解码函数unescape来分析字符。但是,当我试图用“%”替换“\”时,我发现了以下有趣的现象:如果后面不满足“t”,浏览器会忽略“\”等字符,“n”可以与t组合形成音译字符。实验验证我的结论:在IE9中调试:testChar

在Chrome下调试:testCharChrome

这里定义了一个变量,它包含一些平时可能很少出现的字符' \ '。调试的时候,有没有看到上面的提示?浏览器智能地忽略特殊位置的字符。因此,当一些看似普通的字符(如文件路径等。)都放在js的变量中,输出结果可能不符合预期。

版权声明:JavaScript中的十六进制字符(改进)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。