Avatar billede draeber Nybegynder
05. november 2003 - 14:14 Der er 9 kommentarer og
1 løsning

HJÆLP: PrintWriter og BufferedWriter skriver nogle "ekstra" tegn

Hej

Jeg er ved at lave et system på en Resin-server, som skal lave en fil, der skal kunne læses på en Macintosh.
Det virker også fint, men når jeg f.eks. skal skrive æ,ø og å, skriver den et ekstra tegn foran den char som jeg sætter den til at udskrive.
F.eks. Hvis jeg skal skrive 'æ', som har HEX-værdien 0xBE, skriver den flg. sekvens 0xC2 0xBE. På Mac'en viser den jo så et ekstra tegn.
Jeg har checket for om 0xC2 er indeholdt i den string, som jeg sender til write() og print() metoderne. Det er den IKKE!

Jeg håber at der er nogen, som kan hjælpe.
Jeg skal aflevere projektet i morgen tidlig...
Avatar billede arne_v Ekspert
05. november 2003 - 14:19 #1
Det lyder som at den skriver i UTF-8 og du forventer ISO-8859-1 !
Avatar billede arne_v Ekspert
05. november 2003 - 14:23 #2
Forslag:

erstat PrintWriter med PrintStream

og brug constructorne med 3 argumenter:

new PrintStream(...,true,"ISO-8859-1")
Avatar billede draeber Nybegynder
05. november 2003 - 14:26 #3
Jeg beder den ikke om, at skrive i noget bestemt format, men det er da sandsynligt....
egentlig skal formatet være MacRoman, hvis det skal være helt rigtigt.

Men hvis jeg beder den om at udskrive en streng som er lavet som følger:
char ae = 0xBE;
String test = Character.toString(ae);

udFil.write(test); //eller print() for den sags skyld
udFil.close();

Burde den vel ikke selv tilføje 0xC2, så indholdet af filen bliver som beskrevet ovenfor.
Avatar billede draeber Nybegynder
05. november 2003 - 14:28 #4
Hvad gør 'true' i den forbindelse?
Avatar billede draeber Nybegynder
05. november 2003 - 14:34 #5
Hmmm.... jeg prøvede lige at sætte charset til ISO-8859-1 på OutputStreamWriter og nu virker det.....

Jeg forstår ikke helt hvorfor, men det er egentlig også ligemeget nu..... bare det virker, så er jeg glad.....
Avatar billede draeber Nybegynder
05. november 2003 - 14:35 #6
Jeg har ellers haft brugt den mulighed før, men fjernede den, da det stadig ikke virkede.....

Nu ser det dog ud til, at jeg har fundet en holdbar løsning...
Avatar billede arne_v Ekspert
05. november 2003 - 14:47 #7
true er autoflush
Avatar billede arne_v Ekspert
05. november 2003 - 14:48 #8
Jo hvis du laver en char 0xBE så vil den med UTF-8 encoding skrive
2 bytes til fil.
Avatar billede arne_v Ekspert
05. november 2003 - 14:49 #9
OK ?
Avatar billede draeber Nybegynder
05. november 2003 - 14:52 #10
ok, det var jeg ikke klar over....

Tak for hjælpen.. Du er jo som altid hurtig med et brugbart svar
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