fix: garbled characters caused by atob (#422)
This commit is contained in:
parent
ca5c3d7c54
commit
7aba3fe0b6
1 changed files with 20 additions and 1 deletions
|
@ -108,7 +108,7 @@ window.addEventListener("DOMContentLoaded", async () => {
|
|||
return;
|
||||
}
|
||||
|
||||
DATA = JSON.parse(atob($indexData.innerHTML));
|
||||
DATA = JSON.parse(decodeBase64($indexData.innerHTML));
|
||||
DIR_EMPTY_NOTE = PARAMS.q ? 'No results' : DATA.dir_exists ? 'Empty folder' : 'Folder will be created when a file is uploaded';
|
||||
|
||||
await ready();
|
||||
|
@ -910,3 +910,22 @@ function getEncoding(contentType) {
|
|||
}
|
||||
return 'utf-8';
|
||||
}
|
||||
|
||||
// Parsing base64 strings with Unicode characters
|
||||
function decodeBase64(base64String) {
|
||||
const binString = atob(base64String);
|
||||
const len = binString.length;
|
||||
const bytes = new Uint8Array(len);
|
||||
const arr = new Uint32Array(bytes.buffer, 0, Math.floor(len / 4));
|
||||
let i = 0;
|
||||
for (; i < arr.length; i++) {
|
||||
arr[i] = binString.charCodeAt(i * 4) |
|
||||
(binString.charCodeAt(i * 4 + 1) << 8) |
|
||||
(binString.charCodeAt(i * 4 + 2) << 16) |
|
||||
(binString.charCodeAt(i * 4 + 3) << 24);
|
||||
}
|
||||
for (i = i * 4; i < len; i++) {
|
||||
bytes[i] = binString.charCodeAt(i);
|
||||
}
|
||||
return new TextDecoder().decode(bytes);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue