Avatar billede js26 Nybegynder
10. juni 2003 - 16:04 Der er 11 kommentarer

æøå og XML og UTF-8

Jeg har problemer med serialisering af et DOM object til en String. Problemet er æøå i kombination med UTF-8. Efter serialisering er specialtegn som f.eks. <>& konverteret til entiteter, men æøå er ikke. Hvis jeg selv erstatter ø med f.eks. &oslash; , konverterer den det til &amp;oslash;

Jeg har prøvet 2 forskellige metoder. :
****************** 1. eksempel *****************
TransformerFactory transFac = TransformerFactory.newInstance();
Transformer transformer = transFac.newTransformer();
Source xmlDomSource = new DOMSource(this.getDoc().getDocumentElement());
java.io.StringWriter wrt = new java.io.StringWriter();
StreamResult xmlResult = new StreamResult(wrt);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.transform(xmlDomSource, xmlResult);
String s = xmlResult.getWriter().toString();

****************** 2. eksempel *****************
OutputFormat fmt = new OutputFormat();   
fmt.setEncoding("UTF-8");
XMLSerializer ser = new XMLSerializer(fmt);
java.io.StringWriter wrt = new java.io.StringWriter();
ser.setOutputCharStream(wrt);
ser.serialize(this.getDoc());
String s = wrt.toString();
Avatar billede arne_v Ekspert
10. juni 2003 - 16:11 #1
Hvorfor skulle den konvertere ÆØÅ til entiteter - det er jo legalt UTF-8 !?
Avatar billede arne_v Ekspert
10. juni 2003 - 16:13 #2
Hvis du vil have den konverteret kunne du prøve at sætte encoding til:
  US-ASCII
Avatar billede arne_v Ekspert
10. juni 2003 - 16:28 #3
Jeg har lige testet.

fmt.setEncoding("UTF-8");

giver:

<element>æøå</element>

(som er ÆØÅ i UTF-8 fortolket som ISO-8859-1)

fmt.setEncoding("US-ASCII");

giver:

<element>&#xe6;&#xf8;&#xe5;</element>

(hvilket er ISO-8859-1 værdierne for ÆØÅ)
Avatar billede js26 Nybegynder
11. juni 2003 - 09:28 #4
Min serialisering konverterer ø til 4 byte ;�
Avatar billede arne_v Ekspert
11. juni 2003 - 09:56 #5
Med fmt.setEncoding("US-ASCII") og XMLSerializer ?

Hvilken version af Xerces og på hvilken platform ?
Avatar billede js26 Nybegynder
11. juni 2003 - 10:12 #6
Hvis jeg bruger US-ASCII kommer der til at stå encoding="US-ASCII" i mit xml.
Der skal stå encoding="UTF-8"

Jeg bruger Xerces 2.0.1 og Xalan 2.3.1
Avatar billede arne_v Ekspert
11. juni 2003 - 10:20 #7
Jeg tror ikke at du kan få den til at lave ÆØÅ til entiteter, når
du angiver UTF-8.
Avatar billede arne_v Ekspert
11. juni 2003 - 10:22 #8
Kan du ikke bruge en s.replaceAll("tegn","entitet") til at få dem som du vil have ?
Avatar billede arne_v Ekspert
24. juni 2003 - 20:55 #9
Kommet videre ?
Avatar billede arne_v Ekspert
11. juli 2003 - 19:09 #10
??
Avatar billede arne_v Ekspert
27. august 2003 - 23:57 #11
??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester