Avatar billede thomasmh Nybegynder
06. maj 2006 - 21:36 Der er 9 kommentarer

Danske bokstaver til System.in

Hej.
Jeg er igang med at lave en applikation der bla. har brug for at læse danske tegn fra tastaturet. Jeg får inputtet til system.in indlæst på følgende måde(kort uddrag af kode)

BufferedReader reader =
            new BufferedReader(new InputStreamReader(System.in));

Problemet er at danske java opfatter mit tastatur som amerikansk(går jeg ud fra) og når jeg inspecter de indtastede strømme er der hverken å,ø eller æ. Jeg går udfra at det er fordi at disse tegn ikke er med i ASCII alfabetet men hvordan kan jeg få indlæst disse tegn.
Avatar billede _carsten Nybegynder
06. maj 2006 - 21:47 #1
Hvad med

BufferedReader reader =
            new BufferedReader(new InputStreamReader(System.in, "ISO-8859-1"));
Avatar billede thomasmh Nybegynder
06. maj 2006 - 21:59 #2
Ja, men java kræver at jeg enter thrower eller catcher en encoding exception... er der ingen anden vej udenom?

På forhånd tak

Thomas
Avatar billede _carsten Nybegynder
06. maj 2006 - 22:03 #3
Nej - men det vel heller ikke noget stort problem

try{
  BufferedReader reader =
            new BufferedReader(new InputStreamReader(System.in, "ISO-8859-1"));
  .....
  .....
  ....
}
catch(UnsupportedEncodingException u){
  u.printStackTrace();
}
Avatar billede _carsten Nybegynder
06. maj 2006 - 22:06 #4
Kører du det console ?
Avatar billede _carsten Nybegynder
07. maj 2006 - 13:24 #5
Med console, mener jeg dosprompt

Er du kommet videre ?
Avatar billede thomasmh Nybegynder
07. maj 2006 - 14:22 #6
Ja, formålet er at skrive en main metode ind i hoved klassen, så ja.
jeg sad og prøvede at få try og catch ind i koden men kunne ikke helt få det til at spille, jeg i forvejen allerede har en try og catch for en anden exception (IOException)
her er mere af koden:

public String getCommand()
    //throws java.io.UnsupportedEncodingException
    {
        String inputLine = "";  // Denne variabel vil indeholde hele linjen skrevet af brugeren i terminalen
       

        System.out.print("> ");    // så man kan se at nu kan der indtastes

     
        BufferedReader reader =
            new BufferedReader(new InputStreamReader(System.in));//, //"ISO-8859-10"));
     
       
        try {
            inputLine = reader.readLine();
        }
       
        //catch(UnsupportedEncodingException u){
        //u.printStackTrace();

       
       
        catch(java.io.IOException exc)
        {
            fejl.læseFejl();
            System.out.println(exc.getMessage());
                               
        }                       
      //}
      //catch(UnsupportedEncodingException u){
      //u.printStackTrace();

     
      String trimmedInputLine = inputLine.toLowerCase();
        return trimmedInputLine;                       

kan ikkel ige få de try og catch til at spille...

mvh Thomas
Avatar billede _carsten Nybegynder
07. maj 2006 - 15:00 #7
Sådan laver din try/catch

public String getCommand(){
    String inputLine = "";  // Denne variabel vil indeholde hele linjen skrevet af brugeren i terminalen
           
           
    System.out.print("> ");    // så man kan se at nu kan der indtastes
           

    try {
        BufferedReader reader =
            new BufferedReader(new InputStreamReader(System.in, "ISO-8859-1"));
               
        inputLine = reader.readLine();
    }
    catch(java.io.UnsupportedEncodingException u){
        u.printStackTrace();
        return "";
    }
    catch(java.io.IOException exc) {
        fejl.læseFejl();
        System.out.println(exc.getMessage());
        return "";
    }
    return inputLine.toLowerCase();
}
Avatar billede thomasmh Nybegynder
07. maj 2006 - 16:30 #8
ak, jeg har gjort præcis som du foreslår, men den koder stadig ikke teksten til ISO-8859-1. Når jeg bruger debuggeren, eller ser hvad jeg får "returnet" er
klør=kl(indsæt sjovt/sjove tegn her)r.

Håber du kommer med endnu et forslag, jeg tror det er lige ved at virke...
og tak forresten...

mvh Thomas
Avatar billede _carsten Nybegynder
07. maj 2006 - 16:43 #9
Når du kører din class i dosprompten, så prøv følgende måde

java -Dfile.encoding=Cp850 NavnetPåDinClassFil
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