Forum » Programiranje » [JAVA] parsanje XML v UTF-8
[JAVA] parsanje XML v UTF-8
DuleKrtola ::
Parsam neke xml fajle, ki jih dobivam z nekega strežnika. Text je v UTF-8 in tu pa tam se pojavi kakšen ruski znak, ki ga ne znam sparseat.
Npr tale:
ŕ (UTF 0x155)
Če bi bil v XMLju zapisan tako, kot je zgoraj, problemov ne bi bilo. Je pa dejansko zapisan kot r´, torej z dvema znakoma. S tema dvema znakoma namreč dobiš ŕ na tikovnici - pritisneš r in altgr+7 (vsaj na slo tipkovnici).
1. Je to sploh pravilno? Če XML na vrhu pravi, da uporablja UTF-8, mar ne bi moral zapisat znak z pripadajočo UTF kodo, ne pa z nekim zapordjem, ki je dejansko ambiguous?
2. Je v JAVI kakšen trik, da poloviš te znake? Ne vem niti, kako bi tole pogooglal.
Uporabljam pa JSoup parser:
Npr tale:
ŕ (UTF 0x155)
Če bi bil v XMLju zapisan tako, kot je zgoraj, problemov ne bi bilo. Je pa dejansko zapisan kot r´, torej z dvema znakoma. S tema dvema znakoma namreč dobiš ŕ na tikovnici - pritisneš r in altgr+7 (vsaj na slo tipkovnici).
1. Je to sploh pravilno? Če XML na vrhu pravi, da uporablja UTF-8, mar ne bi moral zapisat znak z pripadajočo UTF kodo, ne pa z nekim zapordjem, ki je dejansko ambiguous?
2. Je v JAVI kakšen trik, da poloviš te znake? Ne vem niti, kako bi tole pogooglal.
Uporabljam pa JSoup parser:
responsePost = client.execute(post); HttpEntity resEntity = responsePost.getEntity(); String response= EntityUtils.toString(resEntity,"UTF-8"); // tukaj bi polovil še te znake Document doc=Jsoup.parse(response, "", Parser.xmlParser());
Spura ::
Kaj pa ce namesto JSoup uporabis navaden DOM parser? Na splosno lahko v unicode characterji ostajajo v vecih oblikah, zato je vcasih potrebna normalizacija:
https://weblogs.java.net/blog/joconner/...
https://weblogs.java.net/blog/joconner/...
Zgodovina sprememb…
- spremenil: Spura ()
DuleKrtola ::
Kaj pa ce namesto JSoup uporabis navaden DOM parser?
Ni šans, preveč dela. Poleg tega je parser že v redu.
V linku ki si ga podal je tisti znak escapean, normalizacija tega ni problem. Pri mojih XMLjih je težava, da nekateri znaki niso zapisani v UTF-8, niti escepani, ampak so zapisani kot "sekvenca tipk", ki naredi ta znak.
DuleKrtola ::
Normalizer did the trick:
http://docs.oracle.com/javase/tutorial/...
Sicer se mi zdi, da se je vrinil nek presledek po normalizaciji. Doh :/
http://docs.oracle.com/javase/tutorial/...
Sicer se mi zdi, da se je vrinil nek presledek po normalizaciji. Doh :/
DuleKrtola ::
To je problematičen text:
Valer´evič
Normalizacija po NFC ne naredi nič, NFKC pa zamenja znak, vendar vrne še en presledek. Kakšna ideja?
Valer´evič
Normalizacija po NFC ne naredi nič, NFKC pa zamenja znak, vendar vrne še en presledek. Kakšna ideja?
DuleKrtola ::
Spura, imaš kakšno idejo od kje pride tisti presledek pri NFKC? In zakaj NFC pravi, da je normalized, čeprav ni?
Spura ::
NFC zdruzuje samo canonical equivalents, NFKC pa tudi compatibility equivalents.
http://www.unicode.org/reports/tr15/tr1...
http://www.unicode.org/reports/tr15/tr1...
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Davčne blagajne (strani: 1 2 3 4 … 24 25 26 27 )Oddelek: Programiranje | 332633 (72636) | Macketina |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3177 (1907) | peterv6i |
» | MSSQL UTF-8 in šumnikiOddelek: Programiranje | 2039 (1790) | biasko |
⊘ | python pomočOddelek: Programiranje | 3407 (2328) | Mavrik |
» | Avtomatično prepoznati POST spremenljivkeOddelek: Programiranje | 1577 (1370) | AnonimkeOP |