I have a Sheets that contains text as défi
(défi) or Österreich
(Östereeich).
I can decode the first by this script, on the other hand I am not able to do the second (I mean the code takes 3 bytes)
Thanks for any help!
function decode(txt){
var texte = []
for (i=0;i<txt.length;i ){
var n = txt.substring(i,i 1).charCodeAt()
if (n>127){
if ((n & 32) > 0){
//texte.push(decode_utf8(txt.substring(i,i 3))) ??
i =2
}
else{
texte.push(decode_utf8(txt.substring(i,i 2)))
i
}
}
else{
texte.push(txt.substring(i,i 1))
}
}
return (texte.join(''))
}
function decode_utf8(s) {
return decodeURIComponent(escape(s));
}
CodePudding user response:
Here is a solution ... based on github
function utf8decode(utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while ( i < utftext.length ) {
c = utftext.charCodeAt(i);
if (c < 128) {
string = String.fromCharCode(c);
i ;
}
else if((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i 1);
string = String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i = 2;
}
else {
c2 = utftext.charCodeAt(i 1);
c3 = utftext.charCodeAt(i 2);
string = String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i = 3;
}
}
return string;
}