Home > Net >  How to decode specific characters (unicode) in Google Sheets
How to decode specific characters (unicode) in Google Sheets

Time:12-13

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;
}
  • Related