Autor | Zpráva | ||
---|---|---|---|
Witiko Profil |
#1 · Zasláno: 5. 9. 2010, 00:21:37 · Upravil/a: Witiko
V rámci své knihovny JStorage jsem měl v úmyslu ukládaná data přejet Aritmetickým kódováním za účelem komprese. Problém je v tom, že se nezdá, že by jakákoliv z těchto technologií: localStorage, globalStorage, userData, cookies; podporovala předání jiných dat, než String. Není zde nějaká možnost, jak ovlivnit uložená data na úrovni jednotlivých bajtů alespoň u některé z těchto technologií?
U konverze daného bajtu na String a následného uložení mám obavy ze ztráty daného bajtu, pokud nepůjde o prohlížečem rozeznaný znak. Jako zvláště nespolehlivý se mi již dříve v tomto ohledu jevil MSIE, který neznámé bajty v textarea měnil automaticky na bajt 20 označující mezeru. původní == String.fromCharCode(původní).charCodeAt(0); //Je možné důvěřovat v zachování jednotlivých bajtů? // A co po uložení a opětovném načtení z localStorage, globalStorage, userData nebo cookies? |
||
Witiko Profil |
#2 · Zasláno: 5. 9. 2010, 18:18:13
Kdokoliv?
|
||
Chamurappi Profil |
#3 · Zasláno: 5. 9. 2010, 18:41:40
Reaguji na Witika:
„Není zde nějaká možnost, jak ovlivnit uložená data na úrovni jednotlivých bajtů alespoň u některé z těchto technologií?“ Myslím, že není. Tedy takhle: • cookies putují přes HTTP hlavičky, které mají rády obyčejná bezdiakritická písmenka a číslice a cokoliv jiného už si koleguje o problém. Třeba znak konce řádku by ti ukončil aktuální sušenkovou hlavičku. • userData se ukládají v XML souboru a formát XML také nedovoluje používat úplně všechny znaky s kódy 0 až 31. Krom toho tam možná dochází i k nějaké normalizaci bílých znaků (odmazání zdvojených mezer a mezer na začátku/konci). • localStorage/globalStorage budou nejspíš přátelské k jakémukoliv druhu JS řetězce. Ale JS řetězec není jen tak obyčejné pole bajtů, je to shluk znaků uložený v paměti v UTF-16, pokud vím. Takže charCodeAt ti může vrátit i větší číslo než 255 .
|
||
Witiko Profil |
#4 · Zasláno: 6. 9. 2010, 16:21:48
Nj, to mě mohlo napadnout a nemusel jsem zakládat zbytečně topic. Díky. :)
|
||
Časová prodleva: 14 let
|
0