如果是纯JS只能用码表,除非和后台交互。 <script type="text/javascript"> var URLCode = { callback : function () { alert('%' + arguments[0].split(/(?=..$)/).join('%')); } }; execScript('URLCode.callback(HEX(ASC("灌")))', 'vbs'); </script>
实际应用是写hta小程序,本地安全即可function ConverEncoding(text, charSetFrom, charSetTo) { var adModeRead = 1; var adModeReadWrite = 3; var adModeRecursive = 0x400000; var adModeShareDenyNone = 16; var adModeShareDenyRead = 4; var adModeShareDenyWrite = 8; var adModeShareExclusive = 12; var adModeUnknown = 0; var adModeWrite = 2; var adReadAll = -1; var adReadLine = -2;
var adTypeBinary = 1; var adTypeText = 2;
var stream = new ActiveXObject("ADODB.Stream"); with (stream) { Mode = adModeReadWrite; Type = adTypeText; Open(); CharSet = charSetFrom; WriteText = text; Position = 0; CharSet = charSetTo; Type = adTypeBinary; var result = Read(adReadAll); Close(); } delete stream; return result; }var v = ConverEncoding("灌水", "UTF-8", "GB2312"); 发现输出的东西不认识 如果能按每个字节获取就好了!
搜索到的是一个gb2312的base64的写法 <script language="javaScript"> <!-- function Base64EncodeFile(fileSpec){ var xml_dom = new ActiveXObject("MSXML2.DOMDocument"); var ado_stream = new ActiveXObject("ADODB.Stream"); var tmpNode = xml_dom.createElement("tmpNode"); tmpNode.dataType = "bin.base64";ado_stream.Type = 1; // 1=adTypeBinary if(ado_stream.state==0){ // 0=adStateClosed 1=adStateOpen ado_stream.Open(); } ado_stream.LoadFromFile(fileSpec); tmpNode.nodeTypedValue = ado_stream.Read(-1); // -1=adReadAll ado_stream.Close();return tmpNode.text; } function Base64EncodeText(TextStr){ var xml_dom = new ActiveXObject("MSXML2.DOMDocument"); var ado_stream = new ActiveXObject("ADODB.Stream"); var tmpNode = xml_dom.createElement("tmpNode"); tmpNode.dataType = "bin.base64";ado_stream.Charset = "gb2312"; ado_stream.Type = 2; // 1=adTypeBinary 2=adTypeText if(ado_stream.state==0){ // 0=adStateClosed 1=adStateOpen ado_stream.Open(); } ado_stream.WriteText(TextStr); ado_stream.Position = 0; ado_stream.Type = 1; // 1=adTypeBinary 2=adTypeText tmpNode.nodeTypedValue = ado_stream.Read(-1); // -1=adReadAll ado_stream.Close();return tmpNode.text; } function Base64DecodeText(Base64Str){ var xml_dom = new ActiveXObject("MSXML2.DOMDocument"); var ado_stream = new ActiveXObject("ADODB.Stream"); var tmpNode = xml_dom.createElement("tmpNode"); tmpNode.dataType = "bin.base64"; tmpNode.text = Base64Str;ado_stream.Charset = "gb2312"; ado_stream.Type = 1; // 1=adTypeBinary 2=adTypeText ado_stream.Open(); ado_stream.Write(tmpNode.nodeTypedValue); ado_stream.Position = 0; ado_stream.Type = 2; // 1=adTypeBinary 2=adTypeText var str = ado_stream.ReadText(-1); // -1=adReadAll ado_stream.Close();return str; }
<script type="text/javascript">
var URLCode = {
callback : function () {
alert('%' + arguments[0].split(/(?=..$)/).join('%'));
}
};
execScript('URLCode.callback(HEX(ASC("灌")))', 'vbs');
</script>
{
var adModeRead = 1;
var adModeReadWrite = 3;
var adModeRecursive = 0x400000;
var adModeShareDenyNone = 16;
var adModeShareDenyRead = 4;
var adModeShareDenyWrite = 8;
var adModeShareExclusive = 12;
var adModeUnknown = 0;
var adModeWrite = 2;
var adReadAll = -1;
var adReadLine = -2;
var adTypeBinary = 1;
var adTypeText = 2;
var stream = new ActiveXObject("ADODB.Stream");
with (stream)
{
Mode = adModeReadWrite;
Type = adTypeText;
Open();
CharSet = charSetFrom;
WriteText = text;
Position = 0;
CharSet = charSetTo;
Type = adTypeBinary;
var result = Read(adReadAll);
Close();
}
delete stream;
return result;
}var v = ConverEncoding("灌水", "UTF-8", "GB2312");
发现输出的东西不认识
如果能按每个字节获取就好了!
<script language="javaScript">
<!--
function Base64EncodeFile(fileSpec){
var xml_dom = new ActiveXObject("MSXML2.DOMDocument");
var ado_stream = new ActiveXObject("ADODB.Stream");
var tmpNode = xml_dom.createElement("tmpNode");
tmpNode.dataType = "bin.base64";ado_stream.Type = 1; // 1=adTypeBinary
if(ado_stream.state==0){ // 0=adStateClosed 1=adStateOpen
ado_stream.Open();
}
ado_stream.LoadFromFile(fileSpec);
tmpNode.nodeTypedValue = ado_stream.Read(-1); // -1=adReadAll
ado_stream.Close();return tmpNode.text;
}
function Base64EncodeText(TextStr){
var xml_dom = new ActiveXObject("MSXML2.DOMDocument");
var ado_stream = new ActiveXObject("ADODB.Stream");
var tmpNode = xml_dom.createElement("tmpNode");
tmpNode.dataType = "bin.base64";ado_stream.Charset = "gb2312";
ado_stream.Type = 2; // 1=adTypeBinary 2=adTypeText
if(ado_stream.state==0){ // 0=adStateClosed 1=adStateOpen
ado_stream.Open();
}
ado_stream.WriteText(TextStr);
ado_stream.Position = 0;
ado_stream.Type = 1; // 1=adTypeBinary 2=adTypeText
tmpNode.nodeTypedValue = ado_stream.Read(-1); // -1=adReadAll
ado_stream.Close();return tmpNode.text;
}
function Base64DecodeText(Base64Str){
var xml_dom = new ActiveXObject("MSXML2.DOMDocument");
var ado_stream = new ActiveXObject("ADODB.Stream");
var tmpNode = xml_dom.createElement("tmpNode");
tmpNode.dataType = "bin.base64";
tmpNode.text = Base64Str;ado_stream.Charset = "gb2312";
ado_stream.Type = 1; // 1=adTypeBinary 2=adTypeText
ado_stream.Open();
ado_stream.Write(tmpNode.nodeTypedValue);
ado_stream.Position = 0;
ado_stream.Type = 2; // 1=adTypeBinary 2=adTypeText
var str = ado_stream.ReadText(-1); // -1=adReadAll
ado_stream.Close();return str;
}