///字符串加码
function encode(strIn)
{if(strIn ==undefined)return "";
var intLen=strIn.length;
var strOut="";
var strTemp;
var strFlag="";
for(var i=0;i<intLen;i++){
strTemp=strIn.charCodeAt(i);
if (strTemp>255 || strTemp<0){
if (strFlag==""){strFlag="#";
strOut=strOut+"[#"+fillLeftWithZero(strTemp.toString(16),4);
}
else if (strFlag=="~"){
strFlag="#";
strOut=strOut+"#"+fillLeftWithZero(strTemp.toString(16),4);
}
else if (strFlag=="#"){
strOut=strOut+fillLeftWithZero(strTemp.toString(16),4);
}
}
else{
if (strTemp < 48 || (strTemp > 57 && strTemp < 65) || (strTemp > 90 && strTemp < 97) || strTemp > 122){
if (strFlag==""){
strFlag="~";
strOut=strOut+"[~"+fillLeftWithZero(strTemp.toString(16),2);
}
else if (strFlag=="#"){
strFlag="~";
strOut=strOut+"~"+fillLeftWithZero(strTemp.toString(16),2);
}
else if (strFlag=="~"){
strOut=strOut+fillLeftWithZero(strTemp.toString(16),2);
}
}
else{
if (strFlag=="#" || strFlag=="~"){
strFlag="";
strOut=strOut+"]"+strIn.charAt(i);
}
else{
strOut=strOut+strIn.charAt(i);
}
}
}
}
return (strOut);
}
/字符串解码
function decode(strIn)
{
if(strIn ==undefined)
return "";
var intLen=strIn.length;
var strOut="";
var strTemp;
var strFlag="";
for(var i=0;i<intLen;i++)
{
strTemp=strIn.charAt(i);
if (strTemp=="["){
i++;
strTemp=strIn.charAt(i);
}
if (strTemp=="]"){
strFlag="";
continue;
}
if (strTemp=="~"){
i++;
strFlag="~";
}
if (strTemp=="#"){
i++;
strFlag="#";
}
switch (strFlag){
case "~":{
strTemp=strIn.substring(i,i+2);
strTemp=parseInt(strTemp,16);
strTemp=String.fromCharCode(strTemp);
strOut=strOut+strTemp;
i++;
break;
}
case "#":{
strTemp=strIn.substring(i,i+4);
if (strTemp.toUpperCase()=="FFFF"){
i+=4;
strTemp=strIn.substring(i,i+4);
}
strTemp=parseInt(strTemp,16);
strTemp=String.fromCharCode(strTemp);
strOut=strOut+strTemp;
i+=3;
break;
}
case "":{
strOut=strOut+strTemp;
break;
}
}
}
return (strOut);
}
/根据长度右边添加0
function fillLeftWithZero(strIn, outLen){
if (typeof(strIn)!="string") return strIn;
for (var i=strIn.length;i<outLen;i++)
strIn="0"+strIn;
return strIn;
}
主要针对用汉字作参数时解决乱码问题
function encode(strIn)
{if(strIn ==undefined)return "";
var intLen=strIn.length;
var strOut="";
var strTemp;
var strFlag="";
for(var i=0;i<intLen;i++){
strTemp=strIn.charCodeAt(i);
if (strTemp>255 || strTemp<0){
if (strFlag==""){strFlag="#";
strOut=strOut+"[#"+fillLeftWithZero(strTemp.toString(16),4);
}
else if (strFlag=="~"){
strFlag="#";
strOut=strOut+"#"+fillLeftWithZero(strTemp.toString(16),4);
}
else if (strFlag=="#"){
strOut=strOut+fillLeftWithZero(strTemp.toString(16),4);
}
}
else{
if (strTemp < 48 || (strTemp > 57 && strTemp < 65) || (strTemp > 90 && strTemp < 97) || strTemp > 122){
if (strFlag==""){
strFlag="~";
strOut=strOut+"[~"+fillLeftWithZero(strTemp.toString(16),2);
}
else if (strFlag=="#"){
strFlag="~";
strOut=strOut+"~"+fillLeftWithZero(strTemp.toString(16),2);
}
else if (strFlag=="~"){
strOut=strOut+fillLeftWithZero(strTemp.toString(16),2);
}
}
else{
if (strFlag=="#" || strFlag=="~"){
strFlag="";
strOut=strOut+"]"+strIn.charAt(i);
}
else{
strOut=strOut+strIn.charAt(i);
}
}
}
}
return (strOut);
}
/字符串解码
function decode(strIn)
{
if(strIn ==undefined)
return "";
var intLen=strIn.length;
var strOut="";
var strTemp;
var strFlag="";
for(var i=0;i<intLen;i++)
{
strTemp=strIn.charAt(i);
if (strTemp=="["){
i++;
strTemp=strIn.charAt(i);
}
if (strTemp=="]"){
strFlag="";
continue;
}
if (strTemp=="~"){
i++;
strFlag="~";
}
if (strTemp=="#"){
i++;
strFlag="#";
}
switch (strFlag){
case "~":{
strTemp=strIn.substring(i,i+2);
strTemp=parseInt(strTemp,16);
strTemp=String.fromCharCode(strTemp);
strOut=strOut+strTemp;
i++;
break;
}
case "#":{
strTemp=strIn.substring(i,i+4);
if (strTemp.toUpperCase()=="FFFF"){
i+=4;
strTemp=strIn.substring(i,i+4);
}
strTemp=parseInt(strTemp,16);
strTemp=String.fromCharCode(strTemp);
strOut=strOut+strTemp;
i+=3;
break;
}
case "":{
strOut=strOut+strTemp;
break;
}
}
}
return (strOut);
}
/根据长度右边添加0
function fillLeftWithZero(strIn, outLen){
if (typeof(strIn)!="string") return strIn;
for (var i=strIn.length;i<outLen;i++)
strIn="0"+strIn;
return strIn;
}
主要针对用汉字作参数时解决乱码问题