1

Téma: [vyřešeno] Problém - sdílení hodnot 128-255 přes pole T00

Dobrý den,

mám problém se zobrazováním hodnot na webové stránce přes sdílené proměnné. Pokud do pole T00 zapíšu znak jehož ASCII hodnota je do 127, tak není problém. Pokud ale zapíšu znak jehož ASCII hodnota je 128 nebo vyšší, tak se mi v konzoli prohlížeče (Google Chrome) ukáže symbol � a prohlížeč tento znak nerozezná.

Konkrétně do pole T00 ukládám tyto hodnoty:
T00[0] = 0x7f;
T00[1] = 0x80;

V shared.txt se zobrazí takto:
T00|€

V Chromu v konzoli se v odpovědi na XMLHttpRequest zobrazí místo eura otazník:
"T00", "�"

Zkoušel jsem různé kódování (UTF-8, windows-1250), ale nic nepomohlo.

Prosím o radu co udělat, abych v polích TXX mohl používat všech 8 bitů a sdílet je s webovou stránkou.

Díky,
Jakub

2 Naposledy upravil: matoljak (2017-04-07 20:25:15)

Re: [vyřešeno] Problém - sdílení hodnot 128-255 přes pole T00

Tak problém se mi nakonec podařilo vyřešit, bylo to v kódování. V kódu webové stránky jsem za req485.open přidal následující řádek:

req485.open("GET", "shared.txt", true);
req485.overrideMimeType('text/xml; charset=iso-8859-1');

Znaky se mi již zobrazují všechny tak jak mají.

EDIT: Stále mám problém se znaky s hodnotami 0x7f až 0x9f, které nejsou v v ISO 8859-1 používány (viz https://cs.wikipedia.org/wiki/ISO_8859-1) a liší se od Unicode. V JavaScriptu používám funkci charCodeAt pro vyčtení hodnoty znaku, která ale pracuje s Unicodem, proto mi vrací i hodnoty vyšší než 255. Pokud někdo ví jak to udělat, abych dostával správné hodnoty, budu velmi rád.

3

Re: [vyřešeno] Problém - sdílení hodnot 128-255 přes pole T00

Celé SDS pracuje s UTF-8. Problém bude ale s tím, co do pole text zapisujete.

Skutečně je znak EURO v UTF-8 zapsán jako 0x7F 0x80 ? Není.
Je to docela náhoda že se to zrovna strefilo pro ISO 8859-1.
Ale ten kdo toto nemá defaultně v prohlížeci nastaveno, by to neviděl ani v tom shared.txt.

Používejte UTF-8, a konkrétně EURO je pak takto: 0xE2 0x82 0xAC

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !