和 escape() 差不多,后面用一组数字 xxx 表示的都是该字符在字符集表里面的编码的 16 进制数字,即 %XXXX 和 /uXXXX 所指皆相同,比如输入十六进制 5BA0,我们可用 /u5BA0 表示,又或者用 %u5BA0 的字符串表示,转换成十进制都是数字 23456,再以 unicode 规则转换的则是“宠”汉字。 也就是根据规则不同,得出的结果不同,——这也是规则制定人所赋予的。
又如,155 由 8 进制转为 10 进制为 1*64+5*8+5=109
String.fromCharCode(109)==="m"
8 进制或 16 进制转义字符总共有 256 个。
16 进制转义字符 固定格式为( 2 位数):
\x HexDigit HexDigit
下面给出相关的转换函数。
var chineseAsCode = { on : function (str) { var arr = []; var hex; for (var i = 0 ; i < str.length ;i++) { hex = ("00" + str.charCodeAt(i).toString(16)).slice(-4); arr.push(hex); } return "\\u" + arr.join("\\u"); } ,un: function (str) { return unescape(str.replace(/\/\//g, "%")); } };
参考《Javascript 8 进制转义字符》http://cmc3.cn/n/258.html