Avatar
skilledt
Člen
Avatar
skilledt:19. března 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. března 9:39
Avatar
skilledt
Člen
Avatar
Odpovídá na skilledt
skilledt:20. března 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. března 11:20
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:20. dubna 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. dubna 13:16
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:20. dubna 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. dubna 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.