Datei einlesen: Umlaute sind Fragezeichen

Status
Nicht offen für weitere Antworten.

gladiator09

Bekanntes Mitglied
hey leute!

ich lese eine datei ein, die einer csv-datei ähnelt (also spalten durch semikolon getrennt)! das funktioniert soweit ganz gut, jedoch bei den umlauten hat er probleme!

alle umlaute werden - nachdem ich sie in die datenbank geschrieben habe - als fragezeichen (?) dargestellt! hab mir das im debugger mal angesehen und ein Ö ist z.b. /ufffd oder sowas in der art!

wie kann ich das machen, dass er mir die umlaute aus der datei normal ausliest bzw. auch dann so in die datenbank speichert?

lg,
alex
 

DrZoidberg

Top Contributor
Man kann beim öffnen von Dateien den Zeichensatz angeben, den Java verwenden soll.

z.B. so

[Java]
try {
BufferedReader reader=new BufferedReader( new InputStreamReader( new FileInputStream("file.txt") , "UTF-8") );
reader.readLine();
BufferedWriter writer=new BufferedWriter( new OutputStreamWriter( new FileOutputStream("file.txt") , "UTF-8") );
writer.write("text");
} catch(Exception e) {
e.printStackTrace();
}
[/Java]

Du kannst dir auch alle verfügbaren Zeichensätze auflisten lassen,.

[Java]
Map<String,Charset> map=Charset.availableCharsets();
for(String key: map.keySet()) {
System.out.println(key);
}
[/Java]

Allerdings sind nicht alle Zeichensätze auch auf allen Betriebssytemen verfügbar.
 

musiKk

Top Contributor
Es gibt hier viele Stellen, an denen Fehler auftreten können: Beim Lesen der Datei, beim Verschicken, beim Empfang in der Datenbank, beim Darstellen über den SQL-Interpreter...
Das Ö hat den Wert \u00D6.

Ich würde erstmal schauen, in welchem Format die CSV-Datei abgespeichert ist. Und auch, was in der Datenbank eingestellt ist.
 

gladiator09

Bekanntes Mitglied
ok danke erstmal!

ich hab jetzt "UTF-8" angegeben, aber hab immernoch fragezeichen in der datenbank! welchen zeichensatz muss ich nehmen, dass er mir umlaute richtig anzeigt?

lg
 
M

maki

Gast
welchen zeichensatz muss ich nehmen, dass er mir umlaute richtig anzeigt?
Wie von meinen Vorrednern schon gesagt: Kommt darauf an.

Welchen Zeichensatz hat die CSV Datei?
Welchen Zeichensatz hat die DB?
 

gladiator09

Bekanntes Mitglied
achso ja könnte sein! wo schau ich nach in der DB? ist das die collation?

und wie gesagt, ich hab kein CSV-file... das is ein file ohne endung, das halt wie ein CSV aufgebaut ist! wo kann ich beim file nachschauen?
 

musiKk

Top Contributor
Ja ach... DBs gibts viele...

Beim File kannst Du das Encoding nicht nachschauen. Das ist eine Einstellung des Programms, das die Datei erzeugt. Es gibt höchstens einen Fehler, wenn Du eine nicht-UTF-8-Datei als UTF-8 liest. Manchmal, nicht immer. Und ob das nun CSV oder "fast CSV" oder was ganz anderes ist, ist ebenso wie der Dateiname egal.
 

gladiator09

Bekanntes Mitglied
ja ok, aber was mach ich jetzt?? ich brauch die umlaute...

bzw. das einzige was ich machen könnte ist: die häufigen umlaute wie ß, Ö, ö, Ü, ... durch eine methode ersetzen! aber das ist schon ziemlich hässlich programmiert!

lg
 

gladiator09

Bekanntes Mitglied
zB. die gestellten Fragen beantworten?

So wie du das machst, wird dir hier gar keiner helfen können.


ja musikK meinte gerade, dass das im programm eingestellt ist... das kann ich nicht nachschauen, weil ich die datei von meinem mobilfunkanbieter bekomme!

und auf meine frage, was in der DB eingestellt ist bzw. wo ich das nachschaue, habe ich bis jetzt keine antwort bekommen?!
 
M

maki

Gast
und auf meine frage, was in der DB eingestellt ist bzw. wo ich das nachschaue, habe ich bis jetzt keine antwort bekommen?!
.. und wir sollen raten welche DB du verwendest?

Wie gesagt, so wird das nix...
 

gladiator09

Bekanntes Mitglied
.. und wir sollen raten welche DB du verwendest?

Wie gesagt, so wird das nix...

achso, stimmt^^ ms sql server 2005...

ich arbeite mit netbeans und mein projekt ist auf "UTF-8" gestellt!

habs jetzt nochmal getestet und wenn ich es mir im debugger anschau, dann hat die zeile, die ich einlese bei einem umlaut nur ein rechteck oder es steht /ufffd (egal ob Ö oder Ü)!
 
M

maki

Gast
achso, stimmt^^ ms sql server 2005...
na also, dann wäre das die Collation ;)

habs jetzt nochmal getestet und wenn ich es mir im debugger anschau, dann hat die zeile, die ich einlese bei einem umlaut nur ein rechteck oder es steht /ufffd (egal ob Ö oder Ü)!
Aha, da wird es interessant, leider bist du wieder nciht genau genug ;)

Wenn du sagst "einlese", meinst du dann das lesen einer Datei (zB. mit BufferedReader)?
Wenn ja, solltest du den Zeichensatz mitangeben, arbeitest du unter Windows?

Zeig doch mal den Code der die Datei einliest...
 

gladiator09

Bekanntes Mitglied
na also, dann wäre das die Collation ;)


Aha, da wird es interessant, leider bist du wieder nciht genau genug ;)

Wenn du sagst "einlese", meinst du dann das lesen einer Datei (zB. mit BufferedReader)?
Wenn ja, solltest du den Zeichensatz mitangeben, arbeitest du unter Windows?

Zeig doch mal den Code der die Datei einliest...

collation: SQL_Latin1_General_CP1_CI_AS

ich arbeite unter windows!

jawoll, ich lese es mit einem bufferedreader ein! habs jetzt umgeschrieben, dass ich einen stream verwende, hatte vorher einen Reader (FileReader)!

Java:
File[] ordner = new File(".").listFiles(); // Ordner in Array schreiben

            // alle EMIL-Files einlesen
            for(int i = 0; i < ordner.length; i++)
            {
                File f = ordner[i]; // Gerade zubehandelnde Datei in 'f' schreiben

                if(f.getName().startsWith("EML")) // nur wenn EMIL-File
                {
                    // EMIL-File einlesen - Anfang
                    r = new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8")); // öffnen des EMIL-Files

                    while((zeile = r.readLine()) != null) // ganzes EMIL-File durchgehen
                    {
                        try
                        {
                            getrennt = zeile.split(";"); // zeile trennen
                            if(getrennt[0].equals("100"))
                            {
                                date = getSQLDate(getrennt[3]); // Timestamp vom Datum erzeugen
                                rnummer = getrennt[1];
                            }
.
.
.
 

gladiator09

Bekanntes Mitglied
Welchen Datentyp hat denn das Feld in der DB?

varchar(100) mit SQL_Latin1_General_CP1_CI_AS

aber glaubst du dass es an der DB liegt, wenns beim debuggen schon falsch in der variable steht?

EDIT: bin gerade draufgekommen, dass ich eine tabelle "mitarbeiter" habe und da gibt es nachnamen, die umlaute drin haben (die namen kommen aus einer anderen DB) und die kann die datenbank einwandfrei darstellen!
 
Zuletzt bearbeitet:

gladiator09

Bekanntes Mitglied
varchar(100) mit SQL_Latin1_General_CP1_CI_AS

aber glaubst du dass es an der DB liegt, wenns beim debuggen schon falsch in der variable steht?

EDIT: bin gerade draufgekommen, dass ich eine tabelle "mitarbeiter" habe und da gibt es nachnamen, die umlaute drin haben (die namen kommen aus einer anderen DB) und die kann die datenbank einwandfrei darstellen!

hat echt keiner mehr eine ahnung? bräuchte das wirklich dringend!
 

HannsW

Bekanntes Mitglied
Ich habe ein ähnlichres Problem, das ich wie folgt gelöst habe;
Code:
public static String asciiDecode(StringBuffer input) {
		char c;
		StringBuffer filtered = new StringBuffer(input.length());
		for (int i = 0; i < input.length(); i++) {
			c = input.charAt(i);
			switch (c) {
			// ä
			case 8222:
				filtered.append("ä");
				break;
			// Ä
			case 381:
				filtered.append("Ä");
				break;

			// ö
			case 8221:
				filtered.append("ö");
				break;

			// Ö
			case 8482:
				filtered.append("Ö");
				break;

			// ü
			case 129:
				filtered.append("ü");
				break;

			// Ü
			case 353:
				filtered.append("Ü");
				break;

			// ß
			case 225:
				filtered.append("ß");
				break;

			// ³
			case 252:
				filtered.append("³");
				break;

			// ²
			case 253:
				filtered.append("²");
				break;

			// µ
			case 230:
				filtered.append("µ");
				break;

			// ~
			case 126:
				filtered.append("~");
				break;

			default:
				filtered.append(c);
				break;
			}

		}
		// System.out.println (filtered.toString());
		return (filtered.toString());
	}

hth
Hanns
 

gladiator09

Bekanntes Mitglied
ok danke, aber hab das gerade getestet und im debugger angesehen! bei mir hat der Char, der der umlaut "sein sollte" einen wert von \ufffd und keine zahl wie z.B. 8222 für "ä"... deshalb funktioniert das leider nicht!

sonst noch ideen?

lg
 

HannsW

Bekanntes Mitglied
ok danke, aber hab das gerade getestet und im debugger angesehen! bei mir hat der Char, der der umlaut "sein sollte" einen wert von \ufffd und keine zahl wie z.B. 8222 für "ä"... deshalb funktioniert das leider nicht!

sonst noch ideen?

lg
Ja, dann setzt Du eben /Ufffd ein, bzw die Werte, die Du brauchst.
8222 ist eine int, und wie stellt man Hex-zahlen dar? und was bedeutet das "/u" vor dem "ffd" ?
Kann Dien HexEditor verscheidene Zahlensysteme darstellen?
 

Aske

Mitglied
Wenn Du diese csv ähnliche Datei mit dem Windows Editor öffnest (nicht Wordpad, sondern der ganz billige Editor) und "speichern unter" wählst, was steht dann da unter der Spalte "Codierung" eingetragen?
 

gladiator09

Bekanntes Mitglied
Ja, dann setzt Du eben /Ufffd ein, bzw die Werte, die Du brauchst.
8222 ist eine int, und wie stellt man Hex-zahlen dar? und was bedeutet das "/u" vor dem "ffd" ?
Kann Dien HexEditor verscheidene Zahlensysteme darstellen?

ich hab das mal gestestet und er stellt das "Ü" ebenfalls mit /ufffd da! und zwar deswegen, weil es im debugger schon ein quadratisches kästchen ist...

Wenn Du diese csv ähnliche Datei mit dem Windows Editor öffnest (nicht Wordpad, sondern der ganz billige Editor) und "speichern unter" wählst, was steht dann da unter der Spalte "Codierung" eingetragen?

ANSI
 

gladiator09

Bekanntes Mitglied
so leute, der tipp mit der codierung im editor war super! habs jetzt mal gegoogelt und bei der ANSI-codierung muss die datei mit dem ISO-8859-1 zeichensatz eingelesen werden!

funktioniert jetzt, dass er die umlaute übernimmt :)

danke euch allen für eure hilfe!

lg

P.S.: für die leute, die das gleiche problem haben:

Java:
// alle EMIL-Files einlesen
            for(int i = 0; i < ordner.length; i++)
            {
                File f = ordner[i]; // Gerade zubehandelnde Datei in 'f' schreiben

                if(f.getName().startsWith("EML")) // nur wenn EMIL-File
                {
                    // EMIL-File einlesen - Anfang
                    r = new BufferedReader(new InputStreamReader(new FileInputStream(f), "ISO-8859-1")); // öffnen des EMIL-Files

                    while((zeile = r.readLine()) != null) // ganzes EMIL-File durchgehen
                    {
                        try
                        {
                            getrennt = zeile.split(";"); // zeile trennen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
F Datei in String-Array einlesen Allgemeine Java-Themen 8
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
J Java 8 Datei einlesen Allgemeine Java-Themen 1
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
R Datei einlesen mit Win7 Allgemeine Java-Themen 8
F Datei einlesen funktioniert nicht Allgemeine Java-Themen 3
J BufferedReader Datei einlesen Allgemeine Java-Themen 8
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
J Best Practice Java 8 Datei einlesen und verarbeiten Allgemeine Java-Themen 2
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
D Wörter aus Datei einlesen Allgemeine Java-Themen 9
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
P Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht Allgemeine Java-Themen 1
AssELAss XML Datei einlesen und anschließen formatiert ausgeben in Datei Allgemeine Java-Themen 0
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
I Input/Output .csv Datei einlesen Allgemeine Java-Themen 4
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
K JAVA Datei einlesen Allgemeine Java-Themen 2
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
Q Text Datei einlesen Allgemeine Java-Themen 27
M Einlesen einer Datei in Java Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
D Shortcut statt Datei einlesen Allgemeine Java-Themen 2
B Applet .java Datei einlesen, anzeigen Allgemeine Java-Themen 3
S Daten in Array als INT-Wert einlesen - jetzt als csv Datei Allgemeine Java-Themen 5
J Große Datei einlesen und gestückelt verarbeiten Allgemeine Java-Themen 4
Y Property Datei einlesen Allgemeine Java-Themen 2
FoolMoon Datei zeilenweise einlesen, aber nicht die erste Zeile! Allgemeine Java-Themen 3
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
G HTML-Datei einlesen, Plain Text in Textfile speichern Allgemeine Java-Themen 4
Y Excel datei einlesen und inhalt verarbeiten Allgemeine Java-Themen 8
H Mit Log4j erzeugte Datei einlesen Allgemeine Java-Themen 2
data89 Datei aus ausführbarer Jar einlesen Allgemeine Java-Themen 2
Noar Datei einlesen, bearbeiten, ausgeben Allgemeine Java-Themen 5
H Datei (zeilenweise) einlesen Allgemeine Java-Themen 3
D Datei im DOS/ASCII-Format einlesen. Allgemeine Java-Themen 9
D binäre Datei einlesen und schreiben? Allgemeine Java-Themen 3
J Text einer .csv Datei einlesen und Zeile in NEUE Zeile hänge Allgemeine Java-Themen 1
H2SO3- csv Datei mit unterschiedlichen Formatierungen einlesen Allgemeine Java-Themen 15
F Double mit Streams aus Datei einlesen Allgemeine Java-Themen 3
A Ini Datei einlesen Allgemeine Java-Themen 5
MQue Datei einlesen Allgemeine Java-Themen 10
K Datei als HEX oder dezimal gem. ASCII einlesen Allgemeine Java-Themen 4
MQue Datei einlesen/auslesen Allgemeine Java-Themen 4
T (Binary)Datei einlesen, Inhalt ändern, Datei schreiben Allgemeine Java-Themen 4
G Datei einlesen und in HashMap verarbeiten Allgemeine Java-Themen 3
G Einlesen von Parameterwerten aus einer txt-Datei Allgemeine Java-Themen 2
pikay TXT-Datei in 2-Dimensionales Array Einlesen Allgemeine Java-Themen 8
J XML-Datei byteweise einlesen und Kodierung auslesen Allgemeine Java-Themen 4
spacegaier Performanceproblem beim Einlesen aus Datei mittels Threads Allgemeine Java-Themen 23
P IOException beim einlesen einer XML- Datei Allgemeine Java-Themen 8
M bei Klick auf Button Datei einlesen Allgemeine Java-Themen 3
S große Datei einlesen! Allgemeine Java-Themen 7
P XML- Datei einlesen Allgemeine Java-Themen 11
S Problem beim Einlesen von byte-werten aus datei Allgemeine Java-Themen 2
E Datei rückwärts einlesen Allgemeine Java-Themen 5
B Problem bei Datei einlesen (Applet) Allgemeine Java-Themen 4
G 180 MB CSV-datei einlesen. Problem! Allgemeine Java-Themen 14
L Frage zu java.util.regex und Einlesen einer Datei Allgemeine Java-Themen 2
D CSV Datei einlesen Allgemeine Java-Themen 17
T iso datei (Image) mit Java einlesen und Inhalt entpacken Allgemeine Java-Themen 3
R Datei einlesen, Strings hinzufügen, abspeichern Allgemeine Java-Themen 4
K .ini Datei einlesen? Allgemeine Java-Themen 6
G outOfMemoryError beim Einlesen einer Datei abfangen? Allgemeine Java-Themen 13
flashfactor Komischer Fehler beim Einlesen einer Datei. Allgemeine Java-Themen 2
K .wav Datei einlesen Allgemeine Java-Themen 2
T Tastatureingabe in Datei einlesen Allgemeine Java-Themen 5
S Datei endlos einlesen (am Dateiende warten) Allgemeine Java-Themen 3
P Probleme beim Einlesen einer TXT/CSV-Datei aus einem JAR Allgemeine Java-Themen 7
M Datei in String einlesen Allgemeine Java-Themen 3
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
C Datei vollständig einlesen Allgemeine Java-Themen 3
D Bilder einlesen, bearbeiten und wieder in Datei schreiben Allgemeine Java-Themen 3
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben