You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.0 KiB
72 lines
2.0 KiB
/* Copyright (c) Business Objects 2006. All rights reserved. */
|
|
|
|
if (typeof bobj == 'undefined') {
|
|
bobj = {};
|
|
}
|
|
|
|
bobj.encodeUTF8 = function(string) {
|
|
var arr = [];
|
|
var strLen = string.length;
|
|
for(var i = 0; i < strLen; i++) {
|
|
var c = string.charCodeAt(i);
|
|
if(c < 0x80) {
|
|
arr.push(c);
|
|
}
|
|
else if(c < 0x0800) {
|
|
arr.push((c >> 6) | 0xc0);
|
|
arr.push(c & 0x3f | 0x80);
|
|
}
|
|
else if(c < 0xd800 || c >= 0xe000) {
|
|
arr.push((c >> 12) | 0xe0);
|
|
arr.push((c >> 6) & 0x3f | 0x80);
|
|
arr.push(c & 0x3f | 0x80);
|
|
}
|
|
else if(c < 0xdc00) {
|
|
var c2 = string.charCodeAt(i + 1);
|
|
if(isNaN(c2) || c2 < 0xdc00 || c2 >= 0xe000) {
|
|
arr.push(0xef, 0xbf, 0xbd);
|
|
continue;
|
|
}
|
|
i++;
|
|
val = ((c & 0x3ff) << 10) | (c2 & 0x3ff);
|
|
val += 0x10000;
|
|
arr.push((val >> 18) | 0xf0);
|
|
arr.push((val >> 12) & 0x3f | 0x80);
|
|
arr.push((val >> 6) & 0x3f | 0x80);
|
|
arr.push(val & 0x3f | 0x80);
|
|
}
|
|
else {
|
|
arr.push(0xef, 0xbf, 0xbd);
|
|
}
|
|
}
|
|
return arr;
|
|
};
|
|
|
|
bobj.encodeBASE64 = function(byteArray) {
|
|
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
|
var arr = [];
|
|
var c1, c2, c3, e1, e2, e3, e4;
|
|
var i = 0, arrLen = byteArray.length;
|
|
|
|
while(i < arrLen) {
|
|
c1 = byteArray[i++];
|
|
c2 = byteArray[i++];
|
|
c3 = byteArray[i++];
|
|
|
|
e1 = c1 >> 2;
|
|
e2 = ((c1 & 3) << 4) | (c2 >> 4);
|
|
e3 = ((c2 & 15) << 2) | (c3 >> 6);
|
|
e4 = c3 & 63;
|
|
|
|
if (isNaN(c2)) {
|
|
e3 = e4 = 64;
|
|
} else if(isNaN(c3)) {
|
|
e4 = 64;
|
|
}
|
|
arr.push(keyStr.charAt(e1));
|
|
arr.push(keyStr.charAt(e2));
|
|
arr.push(keyStr.charAt(e3));
|
|
arr.push(keyStr.charAt(e4));
|
|
}
|
|
return arr.join('');
|
|
}; |