Php 通过JSONP发送数据时丢失字符

Php 通过JSONP发送数据时丢失字符,php,javascript,character-encoding,jsonp,base64,Php,Javascript,Character Encoding,Jsonp,Base64,我想创建一个脚本(javascript file.JS),我可以把它从我的域放到每个网站上。脚本必须从网站读取文本并将其发送到服务器。服务器位于另一个域,而不是它从中读取文本的网站,这就是我使用JSONP的原因。读到的文本可以用不同的方式(不同的语言-世界各地的网站)进行字符化,它们可以很长,这就是为什么在发送它们之前,我用base64对它们进行编码,将它们分成数据包,并使用GET(JSONP)单独发送它们 如果没有getJson()函数的定义,代码是: var sBase64Code = ba

我想创建一个脚本(javascript file.JS),我可以把它从我的域放到每个网站上。脚本必须从网站读取文本并将其发送到服务器。服务器位于另一个域,而不是它从中读取文本的网站,这就是我使用JSONP的原因。读到的文本可以用不同的方式(不同的语言-世界各地的网站)进行字符化,它们可以很长,这就是为什么在发送它们之前,我用base64对它们进行编码,将它们分成数据包,并使用GET(JSONP)单独发送它们

如果没有
getJson()
函数的定义,代码是:

var sBase64Code = base64_encode( document.getElementById('idText').innerHTML );
// we devide sBase64Code into data packets, 
// and changing it to array aBase64Code – I skip this algorythm
// and then I send packets to the server in loops
for(i in aBase64Code) {
   getJson(['idx='+i, 'code='+aBase64Code[i]], hFunCallback);
}
但是,在将代码发送到服务器、加入数据包并通过
base64\u decode()
对数据进行解码后,发现与英语不同的字符丢失了

mb_convert_编码(base64_decode($b64),mb_detect_编码(base64_decode($b64))
不起作用

JavaScript
base64\u encode()
函数是:

function base64_encode(data) {
    var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc = "", tmp_arr = [];
    if(!data) return data;

    do {
        o1 = data.charCodeAt(i++);
        o2 = data.charCodeAt(i++);
        o3 = data.charCodeAt(i++);

        bits = o1 << 16 | o2 << 8 | o3;

        h1 = bits >> 18 & 0x3f;
        h2 = bits >> 12 & 0x3f;
        h3 = bits >> 6 & 0x3f;
        h4 = bits & 0x3f;

        tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
    } while (i < data.length);

    enc = tmp_arr.join('');
    var r = data.length % 3;

    return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
};
函数base64\u编码(数据){
变量b64='ABCDEFGHIJKLMNOPQRSTUVXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789+/=';
var o1,o2,o3,h1,h2,h3,h4,位,i=0,ac=0,enc=”,tmp_arr=[];
如果(!data)返回数据;
做{
o1=data.charCodeAt(i++);
o2=data.charCodeAt(i++);
o3=data.charCodeAt(i++);
位=o18&0x3f;
h2=位>>12&0x3f;
h3=位>>6&0x3f;
h4=位&0x3f;
tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4);
}而(i
 
  • Javascript 相位器3,图像显示为绿色方形
  • Javascript Can';t从SVG图像元素加载图像
  • Javascript datatables列宽尝试均匀分割
  • Javascript 如何左对齐google apps脚本中放入body元素的第一个内联元素
  • Javascript 画布在手机上伸展,但在电脑上不伸展
  • Javascript 避免div中嵌入的媒体通过innerHTML进行添加时刷新
  • Javascript Vue计数字符串长度
  • Javascript 角CDK旋转不点火