mboost-dp1
Programmer Java med XML og UTF-16
- Forside
- ⟨
- Forum
- ⟨
- Programmering
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?
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?
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?
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.
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.
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?
:-)
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?
:-)
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);
}
}
#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.
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.
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
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.
#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.
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.
#14
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...
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...
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.