推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

通过 URL 传递 base64 编码 中文参数的问题_和浏览器判断

   2023-07-29 网络整理佚名1600
核心提示:之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。串变得很长。方式保存的。字符串进行编码。但是可以通过utf.编码。的中文字符串。但是还有个问题需要注意。参数进行传递。否则在服务器端解码后就会出错。-1,-1,-1,-1,-1//编码函数0xff;2);2);4));2);4));>6));//解码函数0xff];-1);-1)0xff];-1);-1)4));0xff;-1);-1)2));0xff;-1);-1)c;4)7:(i-1);

一般来说,URL中的参数应该使用url编码规则,即参数字符串中除-_之外的所有非字母数字字符。 将被替换为百分号 (%) 后跟两个十六进制字符数字,空格被编码为加号 (+)。 但对于带有中文的参数,这种编码会使编码后的字符串变得很长。 如果想要更短的方式对参数进行编码,可以使用方法对字符串进行编码,但是方法无法处理#中的中文,因为#中的中文是以UTF-16存储的。 它只能处理单字节字符,因此不能直接用于对带有汉字的#字符串进行编码。 但可以使用utf.js程序先将UTF-16编码的中文转换为UTF-8,然后再进行编码。 编码后的字符串传到服务器后可以直接解码为UTF-8中文字符串。 但还有一个问题需要注意。 编码中使用了加号(+),在传递 URL 时,+ 会被视为空格,因此编码字符串中的加号必须替换为 %2B 后才能作为 URL 参数传递。 否则服务器端解码后会出现错误。

””

var =“89+/”;

var = 新数组(

-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,

52、53、54、55、56、57、58、59、60、61、-1、-1、-1、-1、-1、-1、

-1、0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、

15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,

-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,

41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1

);

//编码函数

(字符串){

var 输出,i,len;

变量 c1、c2、c3;

长度 = 字符串;

我 = 0;

输出=“”;

while(i < len) {

c1 = str.(i++) & 0xff;

如果(我==长度){

输出 += .(c1 >> 2);

输出 += .((c1 & 0x3) > 2);

输出 += .(((c1 & 0x3)> 4));

输出 += .((c2 & 0xF) > 2);

输出 += .(((c1 & 0x3)> 4));

输出 += .(((c2 & 0xF) >6));

输出 += .(c3 & 0x3F);

出去;

//解码函数

(字符串){

变量 c1、c2、c3、c4;

var i、len、out;

长度 = 字符串;

我 = 0;

输出=“”;

while(i < len) {

做 {

c1 = [str.(i++) & 0xff];

while(i < len && c1 == -1);

如果(c1==-1)

休息;

做 {

c2 = [str.(i++) & 0xff];

while(i < len && c2 == -1);

如果(c2==-1)

休息;

输出 += .((c1 > 4));

做 {

c3 = str.(i++) & 0xff;

如果(c3==61)

出去;

c3 = [c3];

while(i < len && c3 == -1);

如果(c3==-1)

休息;

输出 += .(((c2 & 0XF) > 2));

做 {

c4 = str.(i++) & 0xff;

如果(c4==61)

出去;

c4 = [c4];

while(i < len && c4 == -1);

如果(c4==-1)

休息;

输出 += .(((c3 & 0x03) = ) && (c ) {

输出 += .(0xE0 | ((c >> 12) & 0x0F));

输出 += .(0x80 | ((c >> 6) & 0x3F));

输出 += .(0x80 | ((c >> 0) & 0x3F));

} 别的 {

输出 += .(0xC0 | ((c >> 6) & 0x1F));

输出 += .(0x80 | ((c >> 0) & 0x3F));

出去;

(字符串){

var 输出,i,len,c;

var char2, char3;

输出=“”;

长度 = 字符串;

我 = 0;

while(i < len) {

c = str.(i++);

(三>> 4)

情况 0: 情况 1: 情况 2: 情况 3: 情况 4: 情况 5: 情况 6: 情况 7:

//

输出 += str.(i-1);

休息;

案例12: 案例13:

// 110x xxxx 10xx xxxx

char2 = str.(i++);

输出 += .(((c & 0x1F)

 
标签: base64
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON