Umlaute im Dateinamen werden durch Fragezeichen ersetzt

16/05/2014 - 01:57 von Christoph Schneegans | Report spam
Hallo allerseits!

Mit einem Java-Programm

final java.io.File original = new java.io.File("/tmp/föo.txt");
final java.io.File canonical = original.getCanonicalFile();
java.lang.System.out.println(original);
java.lang.System.out.println(canonical);

erhalte ich auf einem Linux-System A folgende Ausgabe:

/tmp/föo.txt
/tmp/f?o.txt

Auf einem anderen Linux-System B und ebenso auf mehreren Windows-
Systemen erhalte ich mit demselben Programm hingegen das erwünschte
Ergebnis:

/tmp/föo.txt
/tmp/föo.txt

/tmp/ ist jeweils für den Benutzer schreibbar und enthàlt auch keine
Dateien mit àhnlichen Namen, die ja das Ergebnis von
java.io.File.getCanonicalFile() evtl. beeinflussen könnten.

Ich sehe zwischen A und B auch keine offensichtlichen Unterschiede;
Dateisystem ist auf beiden ext3, und env sagt jeweils:

LANG=en_US.UTF-8

Wo könnte ich noch schauen?

(Ich habe absichtlich keinen Followup-To-Header gesetzt. Wenn im Laufe der
Diskussion klar wird, wo das Problem liegt, möge das nachgeholt werden.)

<http://schneegans.de/lv/> · Validator für BCP 47
 

Lesen sie die antworten

#1 Heiner Kücker
16/05/2014 - 06:56 | Warnen spam
Christoph Schneegans schrieb:
Mit einem Java-Programm
final java.io.File original = new java.io.File("/tmp/fï¿œo.txt");
final java.io.File canonical = original.getCanonicalFile();
java.lang.System.out.println(original);
java.lang.System.out.println(canonical);

erhalte ich auf einem Linux-System A folgende Ausgabe:

/tmp/fï¿œo.txt
/tmp/f?o.txt

Auf einem anderen Linux-System B und ebenso auf mehreren Windows-
Systemen erhalte ich mit demselben Programm hingegen das erwï¿œnschte
Ergebnis:

/tmp/fï¿œo.txt
/tmp/fï¿œo.txt

/tmp/ ist jeweils fï¿œr den Benutzer schreibbar und enthï¿œlt auch keine
Dateien mit ï¿œhnlichen Namen, die ja das Ergebnis von
java.io.File.getCanonicalFile() evtl. beeinflussen kï¿œnnten.

Ich sehe zwischen A und B auch keine offensichtlichen Unterschiede;
Dateisystem ist auf beiden ext3, und env sagt jeweils:

LANG=en_US.UTF-8

Wo kï¿œnnte ich noch schauen?



Hat Java/die IDE eventuell auf den unterschiedlichen
Systemen unterschiedliche Zeichensàtze?

Du kannst die Umlaute eventuell mit
Backslash-u im String-Literal
notieren:

http://javawiki.sowas.com/doku.php?id=java:unicode

(Ich habe absichtlich keinen Followup-To-Header gesetzt. Wenn im Laufe der
Diskussion klar wird, wo das Problem liegt, mï¿œge das nachgeholt werden.)
<http://schneegans.de/lv/> ᅵ Validator fᅵr BCP 47



Gruesse
Heiner
www.heinerkuecker.de

Ähnliche fragen