IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Problém s konverzí stringu na base64 a na ArrayBuffer

V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
skilledt
Člen
Avatar
skilledt:19.3.2018 9:39

Dobrý den, vyvíjím aplikaci v ionicu, která komunikuje přes UDP a využívá k tomu chrome sockets. Před odesláním nějakého stringu tímto způsobem je potřeba ho nejdříve z zkonvertovat na Arraybuffer a naopak při obdržení zprávy Arraybuffer dekódovat zpátky na string. K tomu používám tyto dvě funkce :

str2ab(str) {
  var buf = new ArrayBuffer(str.length*2);
  var bufView = new Uint8Array(buf);
  for (var i = 0, strLen = str.length; i < strLen; i++) {
    bufView[i] = str.charCodeAt(i);
  }
  return buf;
}
ab2str(buf) {
  return String.fromCharCode.apply(null, new Uint8Array(buf));
}

Problém je, se znaky s diakritikou, které nejsou převedeny korektně : například ze ž vznikne ž

Lze nějak tedle problém odstranit?

 
Odpovědět
19.3.2018 9:39
Avatar
skilledt
Člen
Avatar
Odpovídá na skilledt
skilledt:20.3.2018 11:20

Případně je možné, že ten problém vzniká až následným převodem z base64 na string pomocí window.atob()? Má někdo s tímdle nějaké zkušenosti? :)

 
Nahoru Odpovědět
20.3.2018 11:20
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:20.4.2018 13:16

Atob a btoa funguji myslim ok.
encodedData = window.btoa('Hello, world');
decodedData = window.atob(en­codedData)

Mozna mas problem s kodovanim. Dalo by se to mozna obejit zasifrovanim na base64. ionic neznam, ale obvykle je problem v tom, ze server posila jine kodovani nez cekas. V php je pak nutne pridat header() se spravnym kodovanim, napr. U js je to podobne, o requestu defaultne ocekava utf8. Mozna mu posilas data v jinem kodovani, napr win-1250 nebo iso-neco-1 latin-1 a pod.

 
Nahoru Odpovědět
20.4.2018 13:16
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:20.4.2018 13:42

Takhle od oka tezko rici. Posli funkci priklad na testovani. Zakoduj/dekoduj to treba pres a-to-b, data, ktera ti script prijme do promenne string.

 
Nahoru Odpovědět
20.4.2018 13:42
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.