和 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