Avatar billede it-dyret Nybegynder
13. februar 2007 - 16:38 Der er 3 kommentarer og
1 løsning

Hvordan sætter man encoding ved skrivning af fil i kode

Jeg har en række xml filer med encoding ISO-8859-1.

Disse filer læser jeg op med DOM, laver rettelser i træet og skriver dem ned igen med denne nedenstående metode. Filen indeholder danske specialtegn og bruges til sprogstyring.

Problemet er, at når jeg igen læser filen op, så vises alle de danske specialtegn forkert. Hvis jeg kigger i filen med en editor, kan jeg se, at encodingen har ændret sig til UTF-8, men i filen ser alle de danske specialtegn rigtige ud.

Hvordan får jeg løst mit problem, så jeg kan gemme en xml ned med danske specialtegn og læse dem op igen uden at de vises forkert?

Hvis jeg manuelt retter encoding tilbage til ISO-8859-1, kan jeg igen læse filen op uden forkert visning... Jeg tænker, at en løsning er at sætte encoding på filen, når jeg skriver den - men forudsat, at det er vejen frem, hvordan gør jeg det??

  private void saveLanguageFile(String xml, Document document){
    try{
      File file = new File(xml);
      file.createNewFile();
   
      Transformer transformer = TransformerFactory.newInstance().newTransformer();
      DOMSource source = new DOMSource(document);
      StreamResult result = new StreamResult(new FileOutputStream(file));
      transformer.transform(source, result);
      result.getOutputStream().flush();
      result.getOutputStream().close();
    } catch (IOException ioe) {
        // TODO
    } catch (TransformerConfigurationException e) {
        // TODO
    } catch (TransformerException e) {
        // TODO
    }
  }
Avatar billede arne_v Ekspert
14. februar 2007 - 04:27 #1
du kunne prøve:

StreamResult result = new StreamResult(new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
Avatar billede arne_v Ekspert
14. februar 2007 - 04:37 #2
evt.

transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "ISO-8859-1");

og

StreamResult result = new StreamResult(new OutputStreamWriter(new FileOutputStream(file), "ISO-8859-1");
Avatar billede it-dyret Nybegynder
14. februar 2007 - 15:04 #3
Jeg startede ud med at prøve med forslag nr. 2 - og det virker helt efter hensigten.

Så smid gerne et svar, så jeg kan sende pointene i din retning, arne_v :)
Avatar billede arne_v Ekspert
14. februar 2007 - 15:48 #4
ok
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