一般来说,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)