📄 encoder.js
字号:
// Description: js.net.Encoder 类
// Author: Changhua.Wan
// Version: 2004.03.06.01
_package("js.net");
_import("js.lang.Object");
function js.net.Encoder() {}
var _p = js.net.Encoder._extends("js.lang.Object");
var _c = js.net.Encoder;
_c.encodeUnicode = function(s) {
return vbs_Str2URI(s, false);
};
_c.decodeUnicode = function(s) {
// TODO
};
_c.encodeUTF8 = function(s) {
return encodeURIComponent(s)
};
_c.decodeUTF8 = function(s) {
return decodeURIComponent(s);
};
_c.encodeURI = function(s) {
var rs = "";
if (@_jscript_version >= 5.5) {
rs = encodeURI(s);
} else {
/*TODO*/
}
return rs;
};
_c.decodeURI = function(s) {
var rs = "";
if (@_jscript_version >= 5.5) {
rs = decodeURI(s);
} else {
/*TODO*/
}
return rs;
};
_c.encodeURIComponent = function(s) {
var rs = vbs_Str2URI(s, true);
rs = s.replace(/%/g, '%25')
.replace(/=/g, '%3D')
.replace(/&/g, '%26')
.replace(/\+/g, '%2B')
.replace(/ /g, '+')
.replace(/\//g, '%2F')
.replace(/\\/g, '%5C')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A');
return rs;
};
_c.decodeURIComponent = function(s) {
// TODO
};
_c.encodeHTML = function(s) {
return s.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/</g, '<')
.replace(/>/g, '>');
};
_c.htmlToText = function(str) {
var elm = document.createElement("DIV");
elm.innerHTML = str;
return elm.innerText;
};
_c.textToHtml = function(str) {
var elm = document.createElement("DIV");
elm.innerText = str;
return elm.innerHTML;
};
_c.strToURI = function(s) {
return vbs_Str2URI(s, false);
};
_c.strToHex = function(s) {
return vbs_Str2Hex(s);
};
_c.hexToStr = function(h) {
return vbs_Hex2Str(h);
};
// 将bytes按GB2312编码方式转化成字符串
_c.ascToStr = function(s) {
try {
var _txt = null;
var stream = new ActiveXObject("ADODB.Stream"); //早版本有同源限制
stream.type = 2 ;
stream.mode = 3 ;
stream.open();
stream.writeText(s);
stream.position = 0;
stream.charset = "GB2312";
stream.position = 2 ;
_txt=stream.readText();
stream.close();
return _txt;
} catch(ex) {
return vbs_Asc2Str(s); //替代方案
}
};
_c.byteToHex = function(_bt) {
var xmldom = new ActiveXObject("Microsoft.XMLDOM");
var elm = xmldom.createElement("byteObj");
elm.dataType = "bin.hex";
elm.nodeTypedValue = _bt;
return(String(elm.text));
};
_c.hexToByte = function(_hx) {
var xmldom = new ActiveXObject("Microsoft.XMLDOM");
var elm = xmldom.createElement("byteObj");
elm.dataType = "bin.hex";
elm.nodeTypedValue = _hx;
return(elm.nodeTypedValue);
};
_c.byteToBase64 = function(_bt) {
var xmldom = new ActiveXObject("Microsoft.XMLDOM");
var elm = xmldom.createElement("byteObj");
elm.dataType = "bin.base64";
elm.nodeTypedValue = _bt;
return(String(elm.text));
};
_c.base64ToByte = function(_b6) {
var xmldom = new ActiveXObject("Microsoft.XMLDOM");
var elm = xmldom.createElement("byteObj");
elm.dataType = "bin.base64";
elm.nodeTypedValue = _b6;
return(elm.nodeTypedValue);
};
_c.byteToStr = function(_bt) {
// TODO
return js.net.Encoder.ascToStr(_bt);
};
_c.getCharset = function(_bt) {
return vbs_getCharset(_bt);
};
// 调用 VBScript 中的编码功能
/*@cc_on @*/
/*@if (!@_js_net_encoder_vbsready) @*/
execScript(''+
'Function vbs_Str2URI(srcStr, thin) \n'+
' Dim i \n'+
' For i = 1 To Len(srcStr) \n'+
' tmpChr = Mid(srcStr, i, 1) \n'+
' If Abs(Asc(tmpChr)) < &HFF Then \n'+
' If thin Then \n'+
' strReturn = strReturn & "%" & Hex(Asc(tmpChr)) \n'+
' Else \n'+
' strReturn = strReturn & "%" & Hex(Asc(tmpChr)) \n'+
' End if \n'+
' Else \n'+
' innerCode = Asc(tmpChr) \n'+
' If innerCode < 0 Then \n'+
' innerCode = innerCode + &H10000 \n'+
' End If \n'+
' Hight8 = (innerCode And &HFF00)\\ &HFF \n'+
' Low8 = innerCode And &HFF \n'+
' strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8) \n'+
' End If \n'+
' Next \n'+
' vbs_Str2URI = strReturn \n'+
'End Function', 'VBScript');
execScript(''+
'Function vbs_Str2Hex(str) \n'+
' Dim i, char, hexValue \n'+
' For i=1 To Len(str) \n'+
' char = Hex(Asc(Mid(str, i, 1))) \n'+
' If Len(char) = 1 then : char = "0" & char : End If \n'+
' hexValue = hexValue & char \n'+
' Next \n'+
' vbs_Str2Hex = hexValue \n'+
'End Function', 'VBScript');
execScript(''+
'Function vbs_Hex2Str(hexStr) \n'+
' Dim i, char, hexValue \n'+
' For i=1 to Len(hexStr) step 2 \n'+
' char = Mid(hexStr, i, 2) \n'+
' If char > "80" Then \n'+
' i = i+2 \n'+
' char = char & mid(hexStr, i, 2) \n'+
' End if \n'+
' Execute "char = &H" & char \n'+
' hexValue = hexValue & chr(char) \n'+
' Next \n'+
' vbs_Hex2Str = hexValue \n'+
'End Function', 'VBScript');
// 判断bytes的编码类型,(UNICODE:FFFE,UTF-8:EFBBBF)
execScript(''+
'Function vbs_getCharset(bytes) \n'+
' Dim b, l \n'+
' l = LenB(bytes) \n'+
' If l = 0 Then vbs_getCharset = "ASCII" : Exit Function \n'+
' b = AscB(MidB(bytes, 1, 1)) \n'+
' If l>=3 And b = &HEF Then \n'+
' If AscB(MidB(bytes, 2, 1)) = &HBB And AscB(MidB(bytes, 3, 1)) = &HBF Then \n'+
' vbs_getCharset = "UTF-8" \n'+
' Exit Function \n'+
' End If \n'+
' ElseIf l>=2 And b = &HFF Then \n'+
' If AscB(MidB(bytes, 2, 1)) = &HFE Then \n'+
' vbs_getCharset = "UNICODE" \n'+
' Exit Function \n'+
' End If \n'+
' End If \n'+
' vbs_getCharset = "ASCII" \n'+
'End Function', 'VBScript');
/*@set @_js_net_encoder_vbsready = true; @*/
/*@end @*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -