Autor | Zpráva | ||
---|---|---|---|
Hanzen Profil * |
#1 · Zasláno: 16. 10. 2011, 16:28:47
Zdravím, mám text který obsahuje zakódované znaky jako třeba \u010d pro písmeno č, je možné to nějak rozkódovat a uložit do proměnné jako normální text? díky
|
||
bukaJ Profil |
#2 · Zasláno: 16. 10. 2011, 16:36:04
Kde je třeba to rozkódovat? Javascript by s tím už měl pracovat jako s jedním znakem. Nebo je řeč o PHP?
|
||
Hanzen Profil * |
#3 · Zasláno: 16. 10. 2011, 16:43:39
Pomocí xmlhttp si pošlu POST požadavek na jednu stránku, která mi vrátí jako response několik řádků textu a poté tu odpověď pomocí innerHTML zobrazím v divu.. Bohužel místo písmen s háčky a čárkami se mi zobrazují tyhle /u.. unicode entity.
Netuším proč to javascript nerozluští sám od sebe.. možná to bylo nějak zakódované dvakrát po sobě ..? |
||
bukaJ Profil |
#4 · Zasláno: 16. 10. 2011, 16:51:25
Pravděpodobně je to dvojitě escapované.
|
||
Hanzen Profil * |
#5 · Zasláno: 16. 10. 2011, 16:55:09
A kterou funkcí to deescapuji? unescape() nemá žádný vliv.
|
||
bukaJ Profil |
#6 · Zasláno: 16. 10. 2011, 17:10:33
Takovou funkci jsem nenašel. Escapování znaků probíhá při "čtení" kódu ze zdrojového kódu. Nejedná se tedy o nějakou funkčnost, ale součást syntaxe jazyka.
Pokud Vám proplulo escapování do proměnné, musíte se zaměřit na to, jak se response XHR požadavku generuje a právě tam opravit dvojité escapování. Opravte skutečnou příčinu problému a nelepte jeho následky na jiných místech. |
||
Hanzen Profil * |
#7 · Zasláno: 16. 10. 2011, 17:16:09
To co mi vyleze z responseTextu bohužel nijak neovlivním, pracovat můžu až s tím dvoj escapovaným textem. Nejde to třeba nějak "přehodit" z proměnné do proměnné aby javascript znova udělal ten překlad \u znaků?
|
||
bukaJ Profil |
#8 · Zasláno: 16. 10. 2011, 17:21:37
Pak vůbec nechápu, k čemu je služba, která vrací takovýto bordel. Obrať se na poskytovatele, tohle přece nejde.
Ale jinak by to možná šlo prasárnou ve stylu document.write('<script>opravena_promenna = \'' + escapovana_promenna + '\'</script>'); |
||
Witiko Profil |
#9 · Zasláno: 17. 10. 2011, 17:24:45 · Upravil/a: Witiko
bukaJ:
To už snad spíš: var výsledek = this.eval("(\"" + escapovanýŘetězec + "\")"); |
||
Chamurappi Profil |
#10 · Zasláno: 17. 10. 2011, 17:35:02 · Upravil/a: Chamurappi
Reaguji na Hanzena:
„Netuším proč to javascript nerozluští sám od sebe“ Protože taháš prostý text. Proč by v něm měl něco nějak luštit? Není to normální řetězec-literál. Reaguji na bukaJe: „Pravděpodobně je to dvojitě escapované.“ Spíš to vypadá na úplně obyčejný json_encode . Pak je správný postup udělat eval na tom celku, co mu přijde…
|
||
bukaJ Profil |
#11 · Zasláno: 17. 10. 2011, 17:36:11
No
Witiko: > o už snad spíš: > var výsledek = this.eval("(\"" + escapovanýŘetězec + "\")"); No právě tohle nemusí pomoci. Nejsem si jist, zda bude u evalu probíhat parsování textu. IMHO musí dojít ke znovuzpracování vnějšího vstupu. Ale nemám to ověřené. |
||
bukaJ Profil |
#12 · Zasláno: 17. 10. 2011, 17:39:32 · Upravil/a: bukaJ
Chamurappi:
„Spíš to vypadá na úplně obyčejný json_encode. Pak je správný postup udělat eval“ Aha. Hm. Nojo, vždyť máš pravdu. Já vůl. |
||
Časová prodleva: 13 let
|
0