///字符串加码
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;
}
主要针对用汉字作参数时解决乱码问题
分享到:
相关推荐
好东西~下载下来会用的自然会用,可以把文件进行保护。
在VB(Visual Basic)环境中,实现Base64的加码和解码功能,可以使用内置的`System.Text.Encoding`类和`Convert`类。例如,`Convert.ToBase64String()`函数用于编码,而`Convert.FromBase64String()`用于解码。 ...
Utf8加码和解码
生成二维码,解密二维码,但是是别人的代码,解码也有一点点小问题
1. **JSON基础**:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON数据结构包括对象(键值对)和数组。 2. **Rapidjson解析**:Rapidjson提供了...
stm32加码jpg图片的程序,stm32驱动液晶屏的例子,stm32液晶屏例程; stm32读写sd卡和解码jpg图片例程,keil mdk工程,keil 4 keil5都可以打开,编译下载即可, 亲自测试过,可正常使用,打开keil MDK工程,重新编译...
为了满足这一要求同时不改变被编码的文本,QP编码结果的每行末尾需要加上软换行符(softlinebreak),即在每行末尾加上一个“=”,但这个字符在解码后不会出现。 6. 一些特定的可打印字符在Quoted-printable编码中...
3、直接用Server.UrlEncode和Server.Decode进行加码和解码操作,这种方法对于发送方和接收方都在一个项目中是可行的,现在的问题是,我们要随意去访问别人的系统,所以只能弃用此方法了。 4、采用HttpUtility...
《Zxing框架在二维码加码解码中的应用》 Zxing,又名“ZXing”(读作“zebra crossing”,意为斑马线),是一个开源的、跨平台的二维码和条形码读取库。它由Google开发并维护,主要用于Android平台,但同时也支持...
PB的utf-8转换,包括加码解码等等 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
在C++编程语言的学习过程中,从零基础到精通是一个逐步积累和深化理解的过程。本教程以"从新手到高手C++全方位学习 代码 第2章从一个最简短的C++程序讲起"为主题,旨在帮助初学者快速入门,通过实践来掌握C++的基本...
锁仓顺势加码EA源码知识点总结 一、EA源码概述 锁仓顺势加码EA源码是一种基于MetaTrader平台的自动交易系统,旨在帮助交易者实现自动化交易。该系统具有锁仓顺势加码功能,可以根据市场情况自动平仓和止盈。 二、...
常见编码解码助手是一款强大的编码解码器,编程中常见的编码类型都可以用这款工具,支持的编码类型包括ASCII转义、UTF-8转义,并支持URL转义、HTML转义等功能,同样也可以进行加码,可满足用户的多种编码和解码需求...
标题中的“小巧图片加码软件GMASK”指的是一个专门用于给图片添加马赛克效果的软件,名为GMASK。这款软件的特点是体积小,占用系统资源少,但功能实用,对于个人用户而言,尤其适用于保护图片中的敏感或私密信息,...
《UrlTool v.2009-4-13:深入理解URL编码、加码与解码》 在互联网世界中,URL(Uniform Resource Locator)是网页和其他资源的唯一地址,它承载着定位网络资源的重要任务。然而,由于URL中可能包含非ASCII字符或...
同时,为了处理不同平台的字节序问题,可能还需要考虑字节顺序转换。 在实际应用中,这个源码可以帮助开发者在C++项目中集成Base64功能,例如在传输二进制数据(如图像或证书)时,可以先将其Base64编码成文本形式...
加码对冲EA是一种在外汇交易中广泛应用的自动交易策略,通常被称为Expert Advisor(EA),是基于MetaTrader交易平台的一种智能交易系统。这种EA利用了特定的算法和规则来进行买卖操作,旨在实现对冲和加码的策略,以...
大众汽车(VOW.DF)作为一家历史悠久的汽车制造商,其在新能源战略上的加码以及转型举措,对于整个汽车行业具有重要的示范和引领作用。随着新能源汽车市场的蓬勃发展,大众汽车公司不仅面临着市场竞争的新挑战,也...
顺势加码非常暴利的ea交易系统, 调整好参数, 能稳定盈利
1. **保障性租赁住房政策**:政府对保障性租赁住房的重视程度不断提高,从2020年底到2022年,一系列政策密集出台,旨在解决新市民和青年人的住房问题。这些政策不仅设定了明确的目标,如2022年计划建设筹集240万套...