Thomas Tschernich: Zeichenkodierung bei der Eingabe

Ich habe CVS-ähnliche Daten über eine kleine Ort-Datenbank, die ich in eine HashMap einlese, dabei fungiert der Ortsname (String) als Schlüssel:

  
...  
        private static Map<String,Ort> orte = new HashMap<String,Ort>();  
...  
 public static void readfile() {  
  
  try {  
   BufferedReader in = new BufferedReader(new FileReader(filename));  
   String zeile = null;  
   while ((zeile = in.readLine()) != null) {  
    String[] zeileArr = zeile.split(";");  
    String start = zeileArr[0];  
    String ziel = zeileArr[1];  
    String typ = zeileArr[2];  
    int laenge = Integer.parseInt(zeileArr[3]);  
    float dauer = Float.parseFloat(zeileArr[4]);  
    if (orte.containsKey(start) == false) {  
     orte.put(start, new Ort(start,new Weg(ziel,typ,laenge,dauer)));  
    } else {  
     orte.get(start).addWeg(new Weg(ziel,typ,laenge,dauer));  
    }  
   }  
  } catch (IOException e) {  
   e.printStackTrace();  
  }  
  
 }  

Nun mache ich eine Benutzereingabe von der Konsole um einen dieser Orte zu suchen. Das funktioniert, solange ich mich im Eclipse befinde. Starte ich das Programm dann aber später über die Konsole (java Classname), werden Orte, die deutsche Umlaute enthalten, nicht mehr erkannt. Die dazugehörige Funktion:

  
 public static String readString(String text) {  
     BufferedReader in = new BufferedReader (new InputStreamReader(System.in));  
     String d;  
     do {  
      System.out.print(text);  
      try {  
       d = in.readLine();  
       if (orte.containsKey(d) == false) throw new Exception();  
       break;  
      } catch (Exception e) {  
       System.out.println("Ort nicht gefunden!");  
      }  
     } while (true);  
     return d;  
 }  

Wie bring ich dem Programm bei, auch in der Konsole solche Orte zu finden? Ich kann gern mit dem kompletten Programm und der kleinen Datendatei dienen falls benötigt.