Andernfalls schreiben die deutschen 'Umlaute' (äöü) von der Konsole in eine Textdatei mit java
derzeit bin ich verzweifelt versucht, zu schreiben, Umlaute, Lesen von der Konsole in utf-8-kodierte text-Datei auf windows 7.
Hier ist der code, um den setup-scanner:
Scanner scanner = new Scanner(System.in, "UTF8");
Hier ist der code zum Lesen der Zeichenfolge:
String s = scanner.nextLine();
Hier ist der code zum schreiben in eine Datei:
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(this.targetFile), "UTF8");
osw.write(s);
Leider, statt z.B. "überraschung", die so geschrieben-Datei ist in utf8 kodiert, aber nicht die Anzeige der Umlaute. Was ist zu tun?
was meinst du mit "die Datei wird nicht angezeigt, das umlaut" ? Wie zeigen Sie die resultierende Datei, und was sehen Sie genau ?
Ich öffnen Sie die resultierende Datei in einem beliebigen text-editor (Notepad++ oder Notepad, beide zeigen das gleiche). Statt der Umlaute sehe ich einen Platzhalter-Zeichen wie ein leeres Rechteck oder ein Quadrat mit einem questionmark.
sind Sie sicher, dass die Konsole die Eingabe in utf-8 kodiert? Hat die schriftart, die Sie verwenden, um die Ausgabe anzuzeigen support Umlaute? Funktioniert der editor, den Sie verwenden, unterstützt die utf-8?
100% sicher. Notepad++ zeigt die Datei als utf8-codiert und ich kann hinzufügen, dass Umlaute manuell mit dem editor. Außer Scanner scanner = new Scanner(System.in, "UTF8"); ich weiß nicht, wie sonst konnte ich das Signal auf utf8.
Versuchen Sie, diese Linie, die
Ich öffnen Sie die resultierende Datei in einem beliebigen text-editor (Notepad++ oder Notepad, beide zeigen das gleiche). Statt der Umlaute sehe ich einen Platzhalter-Zeichen wie ein leeres Rechteck oder ein Quadrat mit einem questionmark.
sind Sie sicher, dass die Konsole die Eingabe in utf-8 kodiert? Hat die schriftart, die Sie verwenden, um die Ausgabe anzuzeigen support Umlaute? Funktioniert der editor, den Sie verwenden, unterstützt die utf-8?
100% sicher. Notepad++ zeigt die Datei als utf8-codiert und ich kann hinzufügen, dass Umlaute manuell mit dem editor. Außer Scanner scanner = new Scanner(System.in, "UTF8"); ich weiß nicht, wie sonst konnte ich das Signal auf utf8.
Versuchen Sie, diese Linie, die
System.out.println(s.contains("ü"));
, wenn es true
es ist Notepad++ Fehler, wenn er sagt: false
System.in nicht utf-8.InformationsquelleAutor yan.kun | 2010-10-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Konsole vermutlich nicht UTF-8, so dass, wenn Sie tun
new Scanner(System.in, "UTF8");
erstellen Sie einen scanner mit dem falschen encoding, und Ihre Umlaute gehen verloren, wenn Sie versuchen, Lesen die Zeilen aus der console.Den Sie verwenden möchten, können
chcp
auf einer Konsole, Eingabeaufforderung, um zu überprüfen, welche code-page verwendet wird.In der Tat, können Sie nicht brauchen, um anzugeben, eine Codierung an alle. Wenn Sie erstellen Sie einfach den scanner als
new Scanner(System.in)
, der Standard-Plattform-Codierung verwendet werden soll.InformationsquelleAutor Grodriguez
Ich hatte ein ähnliches problem (Die Zeichenfolge "ç -", nicht "erkannt", indem Sie die Scanner-und Zeichenfolgen wie "Açores" hätte das ç-Zeichen "entstellt").
Ich löste es, indem er erklärte den Zeichensatz für die Sprache:
InformationsquelleAutor MyNameIsZero
Dieser arbeitete für mich, mit deutschen Umlauten:
InformationsquelleAutor greuze