⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encoder.js

📁 JSVM核心类库,收集了JAVA进行JSVM开发必用技术进行归纳,在实际项目应用中直接引用相关类库即可现实JSVM相关功能!
💻 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, '&amp')
		.replace(/"/g, '"')
		.replace(/</g, '&lt;')
		.replace(/>/g, '&gt;');
};

_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 + -