Å, Ä och Ö skrivs ej ut i fil [JAVA]

Permalänk

Å, Ä och Ö skrivs ej ut i fil [JAVA]

Hej har ett litet problem med ett program. Försöker få till en funktion som hämtar cellinnehåll från celler i ett excel-ark, ersätta ett gäng bitar i en String och sedan skriva ut resultatet i en XML-fil. Allting fungerar förutom att alla å, ä ö blir något helt annat än bokstäver.

Att bara hämta cellinnehåll till en jxl.Cell [] och sedan direkt skriva ut det i en text-fil är inga problem. Men när jag för in cellinnhållet i den String jag vill modifiera, (med string.replaceFirst()) och sedan skriver ut det till en fil uppstår problemet. Någon som har en ide om vad jag gör fel?
Kod:

public void replace() throws IOException { try { for (int j = 1; j < cellArray.length; j++) { BufferedReader reader = new BufferedReader(new FileReader(inputXml)); String line = "", oldtext = ""; while((line = reader.readLine()) != null) { oldtext += line + "\r\n"; } reader.close(); //Replace strings String newtext = oldtext.replaceFirst( ".*<vc_CorrectiveAction>\\s+</vc_CorrectiveAction>.*", " <vc_CorrectiveAction>"+ cellArray[j].getContents() + "\n" + " </vc_CorrectiveAction>"); FileWriter writer = new FileWriter(outputFile); writer.write(newtext); writer.close(); } } catch (IOException ioe) { ioe.printStackTrace(); } }

Dold text
Visa signatur

You're damned if you do and you're damned if you don't

Permalänk
Medlem

Istället för FileWriter, använd FileOutputStream, då kan du "wrappa" den med OutputStreamWriter, med vilken du kan välja teckenkodning. Har inte tid att skriva något exempel, men googla nåt i stil med Create file with FileOutputStream + OutputStreamWriter och du listar säkert ut det.

Visa signatur

"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." - Brian W. Kernighan

Permalänk
Skrivet av ePoint:

Istället för FileWriter, använd FileOutputStream, då kan du "wrappa" den med OutputStreamWriter, med vilken du kan välja teckenkodning. Har inte tid att skriva något exempel, men googla nåt i stil med Create file with FileOutputStream + OutputStreamWriter och du listar säkert ut det.

Tack! UTF-8 kodning fixade biffen!
EDIT: Nu var jag för snabb, det gjorde det inte riktigt.
Vad bör man ha för teckenuppsättning för svenska språket?

Visa signatur

You're damned if you do and you're damned if you don't

Permalänk
Medlem
Skrivet av Berserkargang:

Tack! UTF-8 kodning fixade biffen!
EDIT: Nu var jag för snabb, det gjorde det inte riktigt.
Vad bör man ha för teckenuppsättning för svenska språket?

Vi kör: en_US.iso885915

Visa signatur

... zzZZzzzZzzzzzZzzz ....

Permalänk
Medlem

UTF-8 är väl det bäste, men lagrar du filen du hämtar från i Windows lär det vara iso8859-1 alt. iso8859-15 som gäller.

Visa signatur

WS: MSI B350M Mortar | AMD Ryzen 7 1700 | PH-TC14PE | 32GB DDR4 3000MHz | 1TB Kingston NV2 | Intel Arc A750 8GB | 2*BenQ G2420HDB
Router: Gigabyte GA-870-UD3 | AMD Phenom II x6 1055t @ 2600MHz, 1.25V | 12GB DDR3 | 2*250GB HDD @ RAID1 | 4TB HDD
Laptop: Thinkpad X220 4291-QF6

Permalänk
Entusiast

Om du ser till att alla dina källkodsfiler är sparade i UTF8-formatet, använder UTF8 mot funktionerna och ser till att data-filerna du vill ha resultat i ifråga använder UTF8, så skall du inte ha några bekymmer.

Unicode/UTF8 är det bästa du kan använda, både för bakåt-kompatibiltet och framtids-säkerhet.

Visa signatur

Bästa programmen till Linux - v2.0
Linux-guide: Val av grafisk miljö. (Att välja distribution).
-
Everyone should have a SGoC in their systems (SGoC: SysGhost on a Chip)

Permalänk
Medlem
Skrivet av Dracc:

UTF-8 är väl det bäste, men lagrar du filen du hämtar från i Windows lär det vara iso8859-1 alt. iso8859-15 som gäller.

UTF-8 är definitivt att föredra i de flesta fall. I windows är det dock Codepage 1252 (Cp1252) som gäller som är en variant av ISO-8859-1/15.

//C