SORRY!没仔细看是八进制,我写的一个函数,只可以做参考,有可能有BUG <script language="JScript"> //alert(parseInt("C",2)) function show(str) { var tempstr=escape(str).replace(/%/g,''); var result=0; var strStatic="0123456789ABCDEF" for(var i=0;i<tempstr.length;i++) { var strEach=tempstr.charAt(i); result=parseInt(result)+strStatic.indexOf(strEach)*Math.pow(16,tempstr.length-i-1); } return result.toString(8) } alert(show("<"))
alert(s);
alert("a".charCodeAt(0))
向回转上面已经写了
alert("\74\123\103\122\111\120\141\126");十六进制
alert("\x3C\x53\x43\x52\x49\x50\x61\x56");UNICODE
alert("\u003C\u0053\u0043\u0052\u0049\u0050\u0061\u0056");
跟正则没有什么关系,在这个例子中,正则没有做任何替换操作
可以提供一个JAVASCRIPT互换的函数么,最好是可以批量的包含换行符的
<script language="JScript">
//alert(parseInt("C",2))
function show(str)
{
var tempstr=escape(str).replace(/%/g,'');
var result=0;
var strStatic="0123456789ABCDEF"
for(var i=0;i<tempstr.length;i++)
{
var strEach=tempstr.charAt(i);
result=parseInt(result)+strStatic.indexOf(strEach)*Math.pow(16,tempstr.length-i-1);
}
return result.toString(8)
}
alert(show("<"))
</script>
function Format(str)
{
return str.length > 0 ? "\\" + str.charCodeAt(0).toString(8).concat(arguments.callee(str.slice(1))) : "";
}
alert(Format("<SCRIPaV"));
</script>
toString(8)是跟天外学的 :)
<script language="JScript">
function show(str)
{
var result="";
var strStatic="0123456789ABCDEF"
for(var k=0;k<str.length;k++)
{
if(escape(str.charAt(k)).indexOf('%')!=-1)
{
tempstr=escape(str.charAt(k)).replace(/%/,'')
var resultEach=0;
for(var i=0;i<tempstr.length;i++)
{
var strEach=tempstr.charAt(i);
resultEach=parseInt(resultEach)+strStatic.indexOf(strEach)*Math.pow(16,tempstr.length-i-1);
}
result+="\\"+resultEach.toString(8)
}
else
{
result+="\\"+str.charCodeAt(k).toString(8)
}
}
return result
}
alert(show("<SCRIPaV"))
</script>
function CoventToOct(str)
{
return str.length > 0 ? "\\" + str.charCodeAt(0).toString(8).concat(arguments.callee(str.slice(1))) : "";
}
function CoventToHex(str)
{
return str.length > 0 ? "\\x" + str.charCodeAt(0).toString(16).concat(arguments.callee(str.slice(1))) : "";
}
alert(CoventToOct("<SCRIPaV"));
alert(CoventToHex("<SCRIPaV"));
</script>呵呵,这个toString()还真好用
GBK就不一样了,首位为1就可以判断出
而可变长度Unicode也可以确定
比如三个字节
第一个字节以1110开头 后面的都是10开头
function ConvertToOct(str)
{
return /^[\x00-\xff]+$/.test(str) ? "\\" + str.charCodeAt(0).toString(8).concat(arguments.callee(str.slice(1))) : "";
}
function ConvertToHex(str)
{
return /^[\x00-\xff]+$/.test(str) ? "\\x" + str.charCodeAt(0).toString(16).concat(arguments.callee(str.slice(1))) : "";
}
alert(ConvertToOct("<SCRIPaV"));
alert(ConvertToHex("<SCRIPaV"));
alert(ConvertToOct("你好"));
</script>