[ Darko Karamarko @ 05.04.2004. 14:09 ] @
Problem je sto kreiram xml file iz DOS programa, a to znaci da mi je rezultat ASCII
datoteka, a moram napraviti XML sa navedenim encodingom.
Ima li netko pri ruci konverzijsku tablicu pomocu koje bih, mozda,
mogao kreirati takav file? Htio bih izbjeci neku externu konverziju.
Hvala na svakoj pomoci
[ -zombie- @ 05.04.2004. 17:23 ] @
moraš da daš malo više podataka. recimo, da li će podaci koje izvoziš biti čist ascii, ili će imati neka druga osim engleskih slova (naša?), ili nešto treće..

najlakše je ako je čist ascii. onda treba samo da za svaki ascii karakter dodaš još jedan bajt vrednosti 0.

e sad, i tu ima začkoljica. ta nula može da se dodaje ili pre svakog karaktera, ili posle. to se zove LE i BE (little & big endian).

ako ti nisu odredili unapred koji od ova dva kodinga da koristiš, moraš to da naglasiš takozvanim BOM (byte order mark) karakterom na početku (U+FEFF).


uff, znam da zvuči komplikovano, ali u stvari nije. evo primera, recimo da treba da enkoduješ string "xml je buducnost", i da da prvo ide bajt manje vrednosti. evo kako taj fajl treba izgledati u hex editoru

Code:

FF FE 78 00 6D 00 6C 00 20 00 6A 00 65 00 20 00 62 00 75 00 ...
----- --    --    --    --    --    --    --    --    --    ---
"BOM"  x     m     l   (SP)    j     e   (SP)    b     u  (itd..)


u prevodu, dodaš dva bajta (vrednosti 255 i 254) na početak fajla, i posle svakog karaktera po jedan bajt (vrednost 0)...
[ Darko Karamarko @ 05.04.2004. 18:05 ] @
Puno si mi pomogao, naročito ovo sa BOM-om!
ASCII datoteku i radim bez naših kvačica da pojednostavim problem.
Riješit ću ovako kako si opisao. Dok uskoro ne dodaju u SW koji prima ovaj XML file mogućnost encodinga UTF-8, a onda, čini mi se, ne moram ništa raditi (ako nema naših kvačica). Jesam li u pravu?
hvala na brzoj pomoći
[ -zombie- @ 05.04.2004. 18:17 ] @
nema na čemu.. ;)

tačno, sa utf8 enkodingom ne moraš ništa da radiš (ni BOM nije potreban), ali samo ako imaš sedmobitne ascii karaktere (0-127).


btw, nisam napomenuo, u prethodnom primeru ako želiš stavljati nule ispred svakog karaktera, onda treba da okreneš BOM (znači prvo FE pa FF)..
[ Reljam @ 06.04.2004. 17:02 ] @
Samo da dodam da je UTF8 'preferred' encoding za stringove sa dosta ASCII slova. ASCII slova zauzimaju samo jedan bajt i human readable su, dok i ostali karakteri mogu da se bez problema zapisu u UTF-8. Znaci ako ti je glavnica XMLa na engleskom ili nasem (latinica), najbolje ti je da izaberes UTF-8.
[ -zombie- @ 06.04.2004. 17:34 ] @
ja bih to još uopštio i rekao da bi utf8 trebao da bude preporučeni za sve moguće primene skladištenja i prenosa podataka, čak i kada je ceo text recimo čist kineski (kada će ova reprezentacija biti 2-3 puta duža od minimalne)..

razloga ima mnogo, ali glavni je onaj originalni zbog koga je utf8 i nastao, za čuvanje unikod imena fajlova na "starim" sistemima (koji znaju samo za jednobajtna kodiranja).

ako ime nekog fajla iskodiramo sa utf-16 (recimo NTFS, mada tačnije, tamo je valjda UCS-2), može da se desi da jedan od bajtova u jednom od karaktera ima vrednost 0x13 ili 0x10 (ili kod bilo kog drugog spec karaktera koji ne bi smeo da se nađe u imenu fajla, npr slash, dvotačka ili backslash).

kada tom istom fajlu pristupite iz nekog programa starijeg od samog unicode standarda, biće belaja..

zato je utf8 zakon, jer su spec karakteri isti kao u običnom ASCIIju, a svi ostali se kodiraju iznad 127. karaktera, i ne remete rad ni jedne stare aplikacije.

naravno, ta aplikacija će dobiti string pun "đubreta", ali ipak validnog đubreta koje neće smetati nikome. oni "važni" karakteri recimo za putanje fajlova (sleševi, backsleševi i tačke) će ostati isti, pa će i stara aplikacija moći da funkcioniše pravilno..
[ Darko Karamarko @ 06.04.2004. 19:26 ] @
Drago mi je da potvrđujete moja razmišljanja. SW koji učitava xml file trenutno prihvaća samo UTF-16, a sada nakon mojih prigovora, napravit će verziju sa prihvaćanjem oba UTF-a. Jer zaista nema nikakve stvarne potrebe za UTF-16,
bitni podaci razmjene su kodovi, a popratni podaci sa nazivima koji mogu imati naše kvačice konvertiram u iste bez kvačica. UTF-8 je zaista idealan za ovo.

hvala dečki i pozdrav s mora
[ Dragi Tata @ 06.04.2004. 19:56 ] @
Citat:
-zombie-:
sa utf-16 (recimo NTFS, mada tačnije, tamo je valjda UCS-2)


Čini mi se da sam negde čitao da XP i noviji sistemi prepoznaju i surogate, ali nemojte da me držite za reč.