Fileoutputstream: Linux Dateinamen mit Umlaute

michaelarban

Mitglied
hallo zusammen,

ich möchte auf einem CentOS 6.2 per JavaCode eine Datei erstellen, die im Dateinamen Umlaute enthält;
auf der CentosMachine ist Locale auf ISO-8859-1 eingestellt

daher habe ich ein ganz einfaches Programm geschrieben, die
1. den Dateinamen als Aufrufparameter übergeben bekommt und die Datei auf der Festplatte erstellt
2. innerhalb des Programmes einen String definiert, der Umlaute enthält und daraus eine Datei erstellt

Bsp (ohne try/catch-Blöcke zwecks Darstellung):

Java:
public class DateiGenerierung
{
    public static void main(String[] args)
    {
        FileOutputStream fos = new FileOutputStream("args[0]"); //1. Fall

        FileOutputStream fos2 = new FileOutputStream("blöde_Früchte.txt"); //2.Fall
    }
}



Programmaufruf:
root@centos:~# java DateiGenerierung böse_Mädchen.dat

dann werden zwar beide Dateien erstellt, jedoch sehen sie so aus
root@centos:~#ls
böse_Mädchen.dat (ok)
bl?de_Fr?chte.txt

Weiss jemand, warum die 2.Datei, deren Dateiname als String direkt im Code angegeben ist, nicht richtig angezeigt wird????:L
 

rme

Top Contributor
Strings in Java sind immer in UTF-16 codiert, aber sie führen nie eine implizite Konvertierung durch. Im ersten Fall bekommst du den Parameter von außen (in ISO-8859-1). Dies wird so im String übernommen, er kennt das Encoding der Außenwelt ja nicht und nimmt einfach an, dass es schon passen wird, wenn der String wieder nach außen geht - was ja auch der Fall ist.

Im zweiten Fall erzeugst du aber selbst einen String, dieser wird dann tatsächlich als UTF-16 gespeichert. Und damit kann das System nicht umgehen - es weiß wiederum nicht, welches Encoding Java Strings haben und nimmt an, dass es es ISO-8859-1 sein wird, deshalb geht es kaputt.

Mit fallen zwei Lösungen ein: Die schlechte wäre, dass du deinen Java-Editor auf ISO-8859-1 stellst und dadurch deine Java-Strings intern so codierst. Dann geht das Programm aber auf Unicode-Systemen nicht mehr :D Deshalb die bessere Idee: Codiere die Strings selbst um. Mit Charset.defaultCharset() erfährst du, welches Encoding deine Umgebung erwartet. Dahin musst du alle Strings umkonvertieren.
 

michaelarban

Mitglied
hallo rme,

ich war wohl etwas voreilig :)

du hast geschrieben:
"Mit Charset.defaultCharset() erfährst du, welches Encoding deine Umgebung erwartet. Dahin musst du alle Strings umkonvertieren."

--> kannst du im obigen Beispiel zeigen, wie ich den String umkonvertieren kann?

Danke
 

rme

Top Contributor
Hm.. welches Encoding hat eigentlich deine Quellcode-Datei? Ich habe gerade nachgeschlagen, dass Java bei Dateinamen automatisch so konvertiert, wie es das System erwartet - dazu muss der Quellcode allerdings in Unicode geschrieben sein, also z.B. UTF-8.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
noah1407 Fileoutputstream Java Basics - Anfänger-Themen 4
S Datei-Speicherort von FileOutputStream Java Basics - Anfänger-Themen 4
J FileOutputStream aktuelle Speicher Pfad ausgeben Java Basics - Anfänger-Themen 13
J FileOutputStream Java Basics - Anfänger-Themen 3
J FileOutputStream write Java Basics - Anfänger-Themen 19
A fileoutputstream ändern Java Basics - Anfänger-Themen 14
Corben Input/Output FileOutputStream - neue Zeile mit write(10) Java Basics - Anfänger-Themen 6
F FileOutputStream.write Java Basics - Anfänger-Themen 2
N FileOutputStream und existenz von Datei überprüfen Java Basics - Anfänger-Themen 2
O OOP FileOutputStream überschreibt ganzen inhalt der txt Java Basics - Anfänger-Themen 4
hdi Datentypen FileOutputStream#write(int) mit ints? Java Basics - Anfänger-Themen 5
J FileOutputStream richtige Pfadangabe? Java Basics - Anfänger-Themen 8
A FileOutputStream -> byte[] (ohne File) Java Basics - Anfänger-Themen 6
G FileOutputStream generieren Java Basics - Anfänger-Themen 2
M FileOutputStream und zu große Zahlen! Java Basics - Anfänger-Themen 10
C FileInputStream und FileOutputStream Java Basics - Anfänger-Themen 4
M Wo den Ordner javafx-sdk-21.0.2 unter Linux ablegen? Java Basics - Anfänger-Themen 5
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
OSchriever Jar-Programm läuft auf Windows aber nicht auf Linux(Raspberri Pi4) Java Basics - Anfänger-Themen 22
F Linux Befehle zum Übersetzen Java Basics - Anfänger-Themen 1
L Linux Befehle unter Windows in Eclipse ausführen Java Basics - Anfänger-Themen 3
K Linux Speicherplatz mit Java prüfen Java Basics - Anfänger-Themen 4
F Console command unter Linux Java Basics - Anfänger-Themen 7
U Was bedeutet $@ in der Linux Kommandozeile Java Basics - Anfänger-Themen 3
B Linux - Error: Could not find or load main class application.Main Java Basics - Anfänger-Themen 28
F Wert in Linux auf die Konsole schreiben Java Basics - Anfänger-Themen 3
F Erste Schritte Unter Windows programmieren und dann auf Linux laufen lassen Java Basics - Anfänger-Themen 4
T Linux Mint mit den aktuellsten Java- Versionen Java Basics - Anfänger-Themen 1
S Datei einlesen - Dateipfad unter Linux anpassen Java Basics - Anfänger-Themen 12
W Eclipse auf Linux langsam und stürzt teilweise ab Java Basics - Anfänger-Themen 2
K Parameterübergabe im Terminal(Linux) Java Basics - Anfänger-Themen 8
P windowListener Linux Java Basics - Anfänger-Themen 8
A .jar unter Linux nutzen Java Basics - Anfänger-Themen 2
E JDK installieren 64bit Linux - 32bit Java ? Java Basics - Anfänger-Themen 10
B Linux, Dateipfad, Einbindung externer Dateien.. Java Basics - Anfänger-Themen 7
S Classpath Libraries werden unter Linux nicht erkannt Java Basics - Anfänger-Themen 5
K Konsolenprogramm optisch wie top(Linux) Java Basics - Anfänger-Themen 2
T Linux-Kommando absetzen Java Basics - Anfänger-Themen 2
Z [TrayIcon] Transparent unter Linux Java Basics - Anfänger-Themen 10
E Input/Output Linux datei in Windows zeilenweise einlesen Java Basics - Anfänger-Themen 4
B Input/Output Textdatei einlesen Windows / Linux Java Basics - Anfänger-Themen 2
C ASCII CODES in Linux anders als auf Windows? Java Basics - Anfänger-Themen 4
J File unter Linux Java Basics - Anfänger-Themen 8
A (Scheinbar) keine Schreibrechte in Linux Java Basics - Anfänger-Themen 5
-horn- Zeilenweises Speichern bei Win und Linux anders? Wie bitwises Angleichen? Java Basics - Anfänger-Themen 3
I Java Programm unter Linux ausführen Java Basics - Anfänger-Themen 2
J jdbc driver on linux ? Java Basics - Anfänger-Themen 11
S Betriebssystem - Ordner erstellen auf Windows & Linux Java Basics - Anfänger-Themen 3
M Problem mit relativen Pfad unter Linux Java Basics - Anfänger-Themen 5
L Lucene Classpath unter linux setzen Java Basics - Anfänger-Themen 8
M Icons etc. werden unter Linux nicht gefunden Java Basics - Anfänger-Themen 6
I Probleme mit Tomcat / Servlet auf Linux (Debian) Java Basics - Anfänger-Themen 7
R .jar läuft nicht unter Linux Java Basics - Anfänger-Themen 11
C Windows Look and Feel unter Linux Java Basics - Anfänger-Themen 10
A Java Installation/Linux Mint Java Basics - Anfänger-Themen 6
G Logger mag kein Linux Java Basics - Anfänger-Themen 3
J Eine JAR unter Linux starten ... Java Basics - Anfänger-Themen 15
B Einrichtung / Installation unter Linux Java Basics - Anfänger-Themen 4
G Ubuntu LInux: wie kann man den Java.Cache löschen? Java Basics - Anfänger-Themen 11
J scanner problem - linux? Java Basics - Anfänger-Themen 16
B Unterscheidung Windows - Linux, wie? Java Basics - Anfänger-Themen 2
P Mit extra VM starten / Batch-Datei / Unter Linux? Java Basics - Anfänger-Themen 22
B Programm existiert? (Linux) Java Basics - Anfänger-Themen 2
G java version umstellen von 1.4 auf 1.6 unter linux Java Basics - Anfänger-Themen 4
G java unter linux programmieren Java Basics - Anfänger-Themen 8
O Linux - Fehler beim kompilieren - HILFE Java Basics - Anfänger-Themen 4
N Verzeichnis auf genügend Festplattenplatz überprüfen - Linux Java Basics - Anfänger-Themen 15
S Internetseite unter Linux öffnen Java Basics - Anfänger-Themen 2
G Linux Server Steuern mit Java! Java Basics - Anfänger-Themen 5
S classe unter windows kompiliert läuft nicht unter linux? Java Basics - Anfänger-Themen 8
G Dateisuche in Linux Java Basics - Anfänger-Themen 8
G Problem mit ProcessBuilder und "rm" unter Linux Java Basics - Anfänger-Themen 4
G Programm um auf einem Linux OS eine Konsole zu öffnen ? Java Basics - Anfänger-Themen 9
loadbrain dateirechte unter linux, verzeichniss anlegen lassen Java Basics - Anfänger-Themen 10
S Compilieren&Starten: Unter Windows prima unter Linux Feh Java Basics - Anfänger-Themen 6
T Speichern, Compilieren usw (speziell Linux) Java Basics - Anfänger-Themen 3
J Zugriff auf eine Mysql-DB unter Linux Java Basics - Anfänger-Themen 6
D Probleme mit java.library.path unter linux Java Basics - Anfänger-Themen 4
J j2sdk unter Linux installieren Java Basics - Anfänger-Themen 37
G linux konsolenprogamm schreiben Java Basics - Anfänger-Themen 7
Z linux-befehl Runtime exec Java Basics - Anfänger-Themen 2
T SimpleDateFormat-Problem in Linux-Umgebung Java Basics - Anfänger-Themen 2
L path einlesen und erkennen ob es für windows oder linux ist Java Basics - Anfänger-Themen 8
M Windows Projekt auf Linux Rechner Java Basics - Anfänger-Themen 2
G Problem mit Vector() + Pfadangabe + Linux Java Basics - Anfänger-Themen 8
P Absolute Verzweiflung: Linux + Java + CLASSPATH Java Basics - Anfänger-Themen 8
S java starten unter linux Java Basics - Anfänger-Themen 7
Y Umgebungsvariablen unter Linux Java Basics - Anfänger-Themen 6
P linux program Java Basics - Anfänger-Themen 6
J Linux Pfad setzen Java Basics - Anfänger-Themen 2
M Linux Java Basics - Anfänger-Themen 2
B gcc-Java/Linux Java Basics - Anfänger-Themen 4
I Tomcat unter Suse Linux installieren Java Basics - Anfänger-Themen 35
F Compiler-Fehlermeldung LINUX Java Basics - Anfänger-Themen 9
C Textdatei unter Linux/Solaris auslesen bzw. ändern Java Basics - Anfänger-Themen 2
L Installation von Java unter Linux Java Basics - Anfänger-Themen 7
R beste linux IDE? Java Basics - Anfänger-Themen 4
G JAR-Datei unter Linux Java Basics - Anfänger-Themen 4
K JVM auf Linux geht nicht Java Basics - Anfänger-Themen 6
G SDK 1.4 unter Linux einrichten Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben