# Umlaute in Eclipse einlesen funktioniert nicht



## Tabkas (29. Dez 2018)

Guten Tag!
Ich weiß, das Thema gab es hier schon ein paar mal. Ich habe die Antworten allerdings alle erfolglos ausprobiert. 

Problem:
Umlaute (wie ö,ä,ß,...) funktionieren super in Eclipse selber, aber wenn ich sie über den Scanner einlese kommt sowas wie ä = Ã¤; ö = Ã¶; ß = ÃŸ; etc.

Ich habe bereits versucht unter Window > Preferences > ... UTF-8 einzustellen, aber das funktioniert nicht.
Scanner s = new Scanner(System.in, "ISO-8859-1"); auch nicht.


Für Hilfe wäre ich sehr dankbar!


----------



## Wurstkopp (31. Dez 2018)

Probier mal folgendes:

Rechtsklick auf dein Projekt -> Properties -> Resource -> Text File Encoding -> Cp1252


----------



## Tabkas (4. Jan 2019)

Unter Recource gibt's nur "Linked Recources" und "Recouce Filters". Aber auch die Suche unter "Properties" findet kein "Text File Encoding".


Danke für die Antwort!


----------



## mihe7 (4. Jan 2019)

Probier mal
`Scanner s = new Scanner(System.in, "UTF-8");`


----------



## Tabkas (4. Jan 2019)

Hilft auch nicht, Resultat bleibt genau gleich.

Danke!


----------



## Barista (4. Jan 2019)

Hier ist eine Liste der Encodings:
https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html

Probier einfach mal was aus.

Ich tippe aber auf CP1252.


----------



## Wurstkopp (5. Jan 2019)

Tabkas hat gesagt.:


> Unter Recource gibt's nur "Linked Recources" und "Recouce Filters". Aber auch die Suche unter "Properties" findet kein "Text File Encoding".
> 
> 
> Danke für die Antwort!



Kein Untermenü von Resource sondern in diesem Menü direkt:

https://www.google.de/search?q=ecli...g9ffAhUDmbQKHVHwByMQ_AUIECgD&biw=1680&bih=914


----------



## Barista (6. Jan 2019)

Das Encoding in Eclipse (Texteditoren) und das Encoding in einem Java-Programm, das in Eclipse gestartet wird, sind zwei verschiedene Angelegenheiten.

In einem Programm benutzt man meist einen Reader, der Zeichencodes von der 8-bit-Datei-Welt (InputStream) in die 16-bit-Java-Character-Unicode-Welt übersetzt.


----------



## mihe7 (6. Jan 2019)

Genau. Bei den Zeichen handelt es sich mit an Sicherheit grenzender Wahrscheinlichkeit um originär UTF-8-kodierte Zeichen, die CP1252 kodiert wurden. Eine Frage wäre, ob das tatsächlich bei der Eingabe passiert. 

@Tabkas Deine Problembeschreibung ist leider recht dürftig. Es wäre an der Zeit, dass Du hier mal kurzen Beispielcode zeigst und genau erklärst, unter welchen Bedingungen das Problem auftritt. 

Beim Posten von Code bitte Code-Tags verwenden: [code=Java]Dein Code[/code]


----------



## Wurstkopp (6. Jan 2019)

mihe7 hat gesagt.:


> Genau. Bei den Zeichen handelt es sich mit an Sicherheit grenzender Wahrscheinlichkeit um originär UTF-8-kodierte Zeichen, die CP1252 kodiert wurden. Eine Frage wäre, ob das tatsächlich bei der Eingabe passiert.
> 
> @Tabkas Deine Problembeschreibung ist leider recht dürftig. Es wäre an der Zeit, dass Du hier mal kurzen Beispielcode zeigst und genau erklärst, unter welchen Bedingungen das Problem auftritt.
> 
> Beim Posten von Code bitte Code-Tags verwenden: [code=Java]Dein Code[/code]



Ich kann das Problem mit folgendem Code nachstellen:


```
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in, "Cp1252");
        while (true){
            String s = scanner.next();
            if(s.equals("q")) break;
            System.out.println(s);
        }
        System.out.println("Bye...");
        scanner.close(); 
    }
```

Indem ich in der von mir beschriebenen Methode das Projekt auf UTF-8 umstelle.


```
öäüß
Ã¶Ã¤Ã¼ÃŸ
```


----------



## mihe7 (7. Jan 2019)

Und was passiert, wenn Du #4 anwendest?


----------



## Tabkas (7. Jan 2019)

```
import java.util.Scanner;
public class test {


    public static void main(String[] args) {
       
        Scanner l = new Scanner(System.in, "Cp1252");

        System.out.println(l.nextLine());
       
    }

}
```


Vielen Dank für die tollen Antworten!

Bei dem Code zB funktioniert es nicht. Ebenso bei "Scanner l = new Scanner(System.in);".

Das Text file enconding habe ich jetzt auf "CP1252" umgestellt.


Ausgabe nachdem ich "ä" einlese ist zwar nun anders, aber auch nicht besser:
ÃƒÂ¤
Oder ein "ö":
ÃƒÂ¶



Vielen Dank!


----------



## mihe7 (7. Jan 2019)

In welcher Umgebung lässt Du das Programm laufen?


----------



## Tabkas (7. Jan 2019)

Wenn ich dich richtig verstehe: Eclipse Version: 4.2.0


----------



## mihe7 (7. Jan 2019)

Bei mir (Eclipse, Linux) taucht das Problem auf, wenn das Encoding der Run Configuration auf UTF-8 gestellt ist und ich mit CP1252 einlese.


----------



## Barista (8. Jan 2019)

Du bist recht spät damit herausgekommen, dass Du System.in in Eclipse benutzt.

Ich nahm an, Du liest eine Datei ein.

Suche mal in einer Suchmaschine Deiner Wahl nach:

eclipse console encoding System.in

Ich habe dies hier gefunden:

https://stackoverflow.com/questions/17385818/eclipse-character-encoding


----------



## Tabkas (9. Feb 2019)

So, ist jetzt ein wenig her, aber:

Das hat leider alles nicht funktioniert, auch nicht der letzte Stackoverflow-Link.

Ich habe jetzt einfach eine umlaute() Methode geschrieben, die aus dem, was der Scanner übernommen hat, wieder die Umlaute macht, die hätten eingelesen werden sollen. 
Es funktioniert auch.


Also vielen Dank trotzdem an euch alle für eure Hilfe!!
Schön' Abend noch


----------

