mboost-dp1

Programmer Java med XML og UTF-16


Gå til bund
Gravatar #1 - newbi
14. aug. 2007 08:35
Jeg sidder og leger med noget java programmering og vil gerne kunne gemme og åbne filer i XML. Jeg har dog brug for at den bl.a. kan læse bogstaverne æ, ø og å fra filen og vil derfor gerne have at XML filen er gemt med UTF-16. Nogen der kan hjælpe mig med at finde frem til hvordan dette kan gøres enten med det som er i den nyeste udgave af Java Runtime Envirement og Java Development Kit eller med en evt. API som kan hentes et sted fra?
Gravatar #2 - myplacedk
14. aug. 2007 08:42
Hvis det bare er lidt æøå, så vil jeg nok anbefale utf8 i stedet, fylder ca. det halve, og er langt nemmere at læse hvis man liiige skal et eller andet, og den bliver læst som ascii eller latin1/iso8859-1.

Men ellers er det normalt ret simpelt at angive et tegnsæt i Java. Eller er det hele processen med at gemme/hente du gerne vil have hjælp til?
Gravatar #3 - Corholio
14. aug. 2007 08:50
Hvis du vil have fuld kontrol over hvordan dit XML-dokumnet skal bearbejdes / struktureres, kan jeg anbefale: [ url=http://jdom.org]http://jdom.org[/url]

Hvis du blot søger en nem XML-serialisering af Java objekter (med mulighed for at tilpasse serialiseringen) kan jeg anbefale: http://xstream.codehaus.org.
Gravatar #4 - Corholio
14. aug. 2007 08:51
Det var så http://jdom.org
Gravatar #5 - newbi
14. aug. 2007 13:28
#2

Det er det at kunne både gemme og åbne xml filer som jeg gerne vil have hjælp til. Heriblandt er det at kunne angive et tegnsæt i filen så filen angiver hvilket tegnsæt som bliver brugt i filen. :-)
Gravatar #6 - myplacedk
14. aug. 2007 13:42
JDOM ser faktisk meget interessant ud. Jeg sad lige og overvejede om jeg skulle anbefale en simpel SAX-parser, hvis det er noget meget simpelt du har gang i, men jeg tror faktisk JDOM ville være fint der også. Prøv dig frem, og sig til hvis du går i stå.
Gravatar #7 - newbi
14. aug. 2007 16:25
Jeg har kun et problem og det er hvordan jeg kan få dokumentet sat til f.eks. at være UTF- 16.
Som standard lader det til at dokumentet bliver sat til at være UTF-8, hvordan overskrives dette og sættes til f.eks. UTF-16?

:-)
Gravatar #8 - arne_v
14. aug. 2007 17:24

import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import com.sun.org.apache.xml.internal.serialize.*;

public class WriteXmlUTF16 {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
Element info = doc.createElement("info");
info.appendChild(doc.createTextNode("ÆØÅ"));
doc.appendChild(info);
OutputFormat fmt = new OutputFormat();
fmt.setIndenting(true);
fmt.setEncoding("UTF-16");
XMLSerializer ser = new XMLSerializer(new OutputStreamWriter(new FileOutputStream("C:\\test.xml"), "UTF-16"), fmt);
ser.serialize(doc);
}
}
Gravatar #9 - newbi
14. aug. 2007 18:14
Mange tak for hjælpen. :-)
Gravatar #10 - myplacedk
14. aug. 2007 21:25
Jeg er lige nysgerrig: Hvorfor foretrækker du utf-16 frem for utf-8?
Gravatar #11 - arne_v
15. aug. 2007 00:10
#10

Særdeles godt spørgsmål.

At gemme XML i UTF-16 er jo ca. lige så praktisk som at svømme med en cementflise i rygsækken ...
Gravatar #12 - Cyrack
15. aug. 2007 06:35
#10 & #11

Er mindst lige så nysgerrig som jer, eftersom UTF-8 giver de samme fordele som UTF-16, men på ned til den halve plads.
Umiddelbart giver UTF-16 kun en fordel hvis man benytter mange subsets, da programmet der skal læse tegnene ikke selv skal skifte tegnsæt ved indlæsning, men det er vist tilpas langt ud til ikke at være et problem.
Gravatar #13 - newbi
15. aug. 2007 07:21
Jeg vil bruge UTF-16 på grund af at jeg i et projekt gemte en xml fil hvor at jeg brugte UTF-8 og når jeg så prøvede at åbne filen igen så fuckede hele lortet op når at der var æ, ø og å i dokumentet
Gravatar #14 - newbi
15. aug. 2007 07:23
Jeg skal bruge æ, ø og å og UTF-8 er kun til amrikanske tegn og der er æ, ø og å ikke med i. UTF-16 er dog et format som kan håndtere disse og flere tegn.
Gravatar #15 - myplacedk
15. aug. 2007 07:24
#12
UTF-16 fylder mindre end UTF-8 i visse tilfælde. Der er et område der vil fylde mere end to bytes i UTF-8, men kun to bytes i UTF-16. Hvis de fleste tegn ligger i det område, så er det UTF-16 giver mening. Jeg tror at fx. de asiatiske skrifttegn ligger i det område.
Gravatar #16 - myplacedk
15. aug. 2007 07:25
#13
Jeg vil bruge UTF-16 på grund af at jeg i et projekt gemte en xml fil hvor at jeg brugte UTF-8 og når jeg så prøvede at åbne filen igen så fuckede hele lortet op når at der var æ, ø og å i dokumentet

Så vil UTF-16 formentlig blive fucket endnu mere op.
Gravatar #17 - myplacedk
15. aug. 2007 07:28
#14
Jeg skal bruge æ, ø og å og UTF-8 er kun til amrikanske tegn og der er æ, ø og å ikke med i. UTF-16 er dog et format som kan håndtere disse og flere tegn.

Helt forkert, begge to kan klare alle unicode-tegn. Den største forskel er hvor meget det fylder, og hvor læsbart det er, hvis du skulle læse det med en viewer der ikke kan håndtere unicode. For dansk og engelsk vinder utf-8 helt klart.

Du kan læse mere her: http://en.wikipedia.org/wiki/Comparison_of_Unicode...
Gravatar #18 - myplacedk
15. aug. 2007 07:29
Det var to grunde. Jeg er fristet til at sige "nej, gæt igen". ;-)
Gravatar #19 - Cyrack
15. aug. 2007 08:03
newbi skrev:
Jeg skal bruge æ, ø og å og UTF-8 er kun til amrikanske tegn og der er æ, ø og å ikke med i. UTF-16 er dog et format som kan håndtere disse og flere tegn.

Lad mig gætte, du læser teksten manuelt, byte for byte og glemmer at fortælle din XmlParser at der er tale om en UTF-8 tekst og den fortolker det som ASCII fordi du har smidt de to første bytes i bytestreamen væk, fordi de "ikke virkede"?
Når XmlParseren så møder et bytestuffed tegn tolkes det som to selvstændige tegn og du får noget stil med "Æ"?
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login