Avatar billede clb92 Nybegynder
21. december 2012 - 10:09 Der er 22 kommentarer og
1 løsning

Java program i CMD vil ikke string.replaceAll() Æ Ø og Å

Hej.

Jeg har lavet et program hvori jeg vil erstatte æ, ø og å, og det virker perfekt i NetBeans (efter jeg satte NetBeans til UTF-8), men når jeg kører min .jar i CMD vil den for det første ikke printe ÆØÅ, men ikke engang replace dem med andre bogstaver.

At den ikke vil printe ÆØÅ har jeg fået af vide er på grund af CMD, men den skulle da stadig printe den nye string korrekt, hvor ÆØÅ er blevet erstattet?
Avatar billede arne_v Ekspert
21. december 2012 - 14:59 #1
CMD consoller sucks til danske bogstaver.

Men:

String s = "øøø";
String s2 = s.Replace("ø", "o");
System.out.println(s2);

burde printe 3 o'er.

Hvordan goer du?
Avatar billede clb92 Nybegynder
21. december 2012 - 17:35 #2
Scanner læser brugerinput til en String (fx kaldet "input"), så som "a b c æ ø å".
Derefter gør jeg dette:

String temp = input.replaceAll("æ", "ae");
String temp2 = temp.replaceAll("ø", "oe");
String temp3 = temp2.replaceAll("å", "aa");

Derefter skulle temp3 gerne være "a b c ae oe aa", ikke? Det er den også hvis jeg kører programmet i NetBeans, som jeg har indstillet til UTF-8, men når programmet kører i CMD bliver temp3 "a b c [] [] []" (hvor [] repræsenterer den "kasse" der dukker op når et tegn ikke kan vises). Hele problemet er, at selvom den ikke kan vise tegnene skulle den da gerne have erstattet dem med "ae oe aa", ikke?
Avatar billede clb92 Nybegynder
21. december 2012 - 17:37 #3
Jeg har også prøvet med input.replace("\u00e6", "ae"); osv, men det ændrer ikke noget.

Hvorfor kan den ikke behandle tegn den ikke kan vise?
Avatar billede arne_v Ekspert
21. december 2012 - 17:50 #4
Bruger du class/jar fil bygget i NetBeans eller noget som du har buildet med javac kommando i CMD?
Avatar billede clb92 Nybegynder
21. december 2012 - 18:07 #5
Compilet i NetBeans. Det er "javac" man bruger for at compile i CMD, ikke?
Avatar billede clb92 Nybegynder
21. december 2012 - 18:08 #6
Doh... Læste ikke hele din kommentar.

Prøver lige at compile med javac...
Avatar billede arne_v Ekspert
21. december 2012 - 18:14 #7
jeg tror ikke at det er det
Avatar billede arne_v Ekspert
21. december 2012 - 18:15 #8
men proev og koer det med:

java -Dfile.encoding=UTF-8 ...

og se om det hjaelper.
Avatar billede clb92 Nybegynder
21. december 2012 - 18:23 #9
Så får jeg "æøå" som ´┐¢´┐¢´┐¢

RETTELSE: I CMD får jeg uden -Dfile.encoding=UTF-8 "æøå" som "???" og ikke "[][][]".
Avatar billede clb92 Nybegynder
21. december 2012 - 18:24 #10
RETTELSE igen:
Sådan ser det ud i min CMD: http://puu.sh/1DzVE.png
Avatar billede arne_v Ekspert
21. december 2012 - 18:46 #11
Jeg proever lige selv.
Avatar billede clb92 Nybegynder
21. december 2012 - 18:56 #12
Jeg kan sende dig hele mit program, for det er en del mere kompliceret, tror jeg.

Her er det: http://clb92.com/files/TextEncryption.zip
Avatar billede arne_v Ekspert
21. december 2012 - 20:07 #13
Jeg kan slet ikke genskabe problemet med min kode.

Jeg kigger lige paa din.
Avatar billede arne_v Ekspert
21. december 2012 - 20:19 #14
Ah.

Du laeser ind fra keyboard.

Lad os tage ø.

I ISO-8859-1 og CP-1252 er det 0xF8

I UTF-8 er det 0xC3 0xB8

I CP-850 er det 0x9B

Hvis din kode konverterer et ø i UTF-8 til "oe" saa vil det ikke konvertere et ø i CP-850.
Avatar billede arne_v Ekspert
21. december 2012 - 20:28 #15
String s = new String(s.getBytes(), "CP850");

paa det indlaeste boer faa det til at virke i en CMD konsol.
Avatar billede clb92 Nybegynder
21. december 2012 - 20:50 #16
Hvor skal jeg skrive det, helt præcist?
Avatar billede arne_v Ekspert
21. december 2012 - 20:57 #17
Der hvor du vil konvertere consol input til det som det burde vaere.
Avatar billede clb92 Nybegynder
21. december 2012 - 21:09 #18
Jeg får fejlen "Unreported exception UnsupportedEncodingException; must be caught or declared to be thrown." når jeg sætter den lige efter min String stringToEncrypt = input.nextLine();
Avatar billede arne_v Ekspert
21. december 2012 - 21:12 #19
ja - du er noedt til at haandtere UnsupportedEncodingException
Avatar billede clb92 Nybegynder
21. december 2012 - 21:24 #20
Heldigvis gav NetBeans mig besked, om bare at klikke på fejlmeddelelsesboblen for at lade den tilføje hvad der manglede selv. Nu virker det. (Undtaget i NetBeans' konsol, som jeg selv satte til UTF-8, men den sætter jeg bare tilbage til standard, så burde det være løst.)

Tusind tak for hjælpen!

Smid et svar :)
Avatar billede arne_v Ekspert
21. december 2012 - 22:29 #21
Jeg er ikke sikker paa at satte NB tilbage til default vil faa det til at virke der.

Du skal nok snarere aendre "CP850" til "UTF-8" elller "ISO-8859-1".
Avatar billede arne_v Ekspert
21. december 2012 - 22:30 #22
Og hvis du undrer dig, saa skifter man normalt til GUI naar man skal have danske tegn haandteret korrekt.
Avatar billede arne_v Ekspert
21. december 2012 - 22:30 #23
Og et 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