Software und Umlaute vertragen sich nicht

Meine Güte, wie mich dieser Mist mit den deutschen Umlauten nervt. Wir fliegen zum Mond, beherrschen das Atom und lesen RSS-Feeds nebenbei. Aber bis heute fallen einem immer wieder "german umlauts" auf die Fusse.
Beispiel: ZIP-Dateien mittels Ant/java.io.zip (im konkreten Fall für SynTAX): Ich habe bisher noch keinen Zeichensatz gefunden, der ZIP-Archive mit Umlauten ermöglicht, die sowohl unter Linux als auch unter Windows fehlerfrei entpackt werden können. Cp437/Cp850 stinken, ISO8859-1 wär schön, kann aber komischerweise Windows nicht so richtig. UTF-8 mag ich nicht, Windows scheinbar auch nicht. Zwei Klopapierrollen voll Kommentare finden sich dazu auch unter http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4415733 und http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244499.

Ich habe nun die Wahl, entweder auf Umlaute in Dateinamen zu verzichten oder getrennte Deployments für Windows und Linux zu erzeugen. Ersteres will ich nicht und letzteres wäre Unsinn wegen drei betroffenen Dateien. Oder kennt jemand noch einen Zeichensatz?

PS: Ich bin dafur, die Umlaute in der nachsten Rechtschreibreform zu streichen.

Trackbacks

Trackback-URL für diesen Eintrag

Dieser Link ist nicht aktiv. Er enthält die Trackback-URI zu diesem Eintrag. Sie können diese URI benutzen, um Ping- und Trackbacks von Ihrem eigenen Blog zu diesem Eintrag zu schicken. Um den Link zu kopieren, klicken Sie ihn mit der rechten Maustaste an und wählen "Verknüpfung kopieren" im Internet Explorer oder "Linkadresse kopieren" in Mozilla/Firefox.

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Andreas Delleske am :

Sehr geehrter Herr Willuhn,

wir freuen uns, Ihnen mitteilen zu durfen, dass in der nachsten Reform der Rechtschreibung Umlaute entfallen werden, ebenso wie das Ligatur-sz.

Wir hoffen, Ihnen damit entsprochen zu haben

Deutsche Gesellschaft fur Rechtschreibung und Reaktorsicherheit.

Alex Bär am :

Eine Lösung habe ich leider nicht, aber den Hinweis, dass es wohl mehr ein Problem auf Windows-Seite ist als sonst irgendwas. Und mit etwas Glück in Vista endlich bereinigt...

Bis Windows XP erlebt man aber zum Beispiel mit XML blaue Wunder, insbesondere im Zusammenhang mit Netzlaufwerken. Die verhalten sich nämlich bei Windows leider überhaupt nicht transparent. Das hängt vielleicht oder auch nicht damit zusammen, dass Windows bis zur Version XP keine ordentliche Unicode-Unterstützung bietet. Wie so oft bei Microsoft: Man wollte einen eigenen Standard etablieren, und hat deshalb ein Microsoft-Code etabliert, das erste Unicode-Ideen implementiert, es dann aber versäumt, den Standard umzusetzen.

Das äußert sich dann, wie folgt.

Man speichert ein XML-Dokument lokal, testet das Programm, das das Dokument verarbeitet, und alles läuft bestens. Man sicher das Dokumen auf einem Netzlaufwerk, erhält keine Fehlermeldung beim Speichern, aber plötzlich lauter Fehlermeldungen von nachgelagerten Programmen, die das Dokument weiterverarbeiten sollen. Dann guckt man mit einem Unicode-fähigen Editor das Dokument noch mal an, und siehe da: Viele Sonderzeichen sind durch Schmutzzeichen und Kombinationen davon ersetzt worden. Also noch mal lokal gespeichert, neuer Test. Keine Probleme.

Das Problem tritt im Übrigen vor Allem dann auf, wenn man mit einem Windows-Programm die XML-Datei bearbeitet, selbst mit Ultra-Edit kann es passieren, Eclipse baut hier ebenfalls gelegentlich Mist, einschließlich fast aller XML-Plugins. Bisher habe ich nur zwei XML-Editoren gefunden, die mit der merkwürdigen Art, wie Windows mit Unicode umgeht, reibungslos und portabel zurecht kommen: Netbeans 5.5 (und das ist nun wirklich noch nicht alt, in der Vorgänger-Version hat's noch nicht gefunzt!) und JEdit.

Naja, vielleicht ist das Zip-Problem ja ähnlich gelagert und verschwindet mit der nächsten Windows-Generation ganz von selbst...?

Wäre immer hin möglich!

Grüße und alles Gute im Neuen Jahr

Alex Bär

Fionn Ziegler am :

Hi Willuhn,
hab momentan genau das gleiche Problem :-(!
Ich benutz die ant bibliotheken! Und es will einfach nur mit Cp850 Funktionieren... Bei fast allen anderen Encodings (z.B: ISO-8859-15)werden die Dateiname zwar richtig ausgelesen(getEntries()), aber z.B in WinRar falsch angezeigt...
Mit Cp850 gehts über Webstart nicht weil manche clients dieses encoding einfach nicht haben!?
Hats Du das Problem evtl. irgendwie gelöst?

Würd mich über ne Mail freun!!

Viele Grüße
Fionn

Olaf am :

Nein, eine Loesung hab ich dafuer auch nicht gefunden. Insbesondere auch, weil es ja ein Bug in Java selbst ist (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244499)

Manfred Janssen am :

Hi,
warum verwendest Du dann nicht einfach die Schreibweise ohne Umlaute (ue, ae, oe...)?
Das sollte das Problem doch loesen, oder?

Viele Grüße
Manfred

willuhn am :

Das wollte ich eigentlich vermeiden, werde es aber wohl so loesen muessen.

Fionn Ziegler am :

Ich habe das Problem jetzt mit der Ant-Lib gelöst... Ist zwar nicht das sauberste, aber es funktioniert..... Vieleicht hilft es ja jemand weiter :-)

/** Creates a zip file out of a collection of files with Umlate support. */
public static void createZIPWithUmlaute(Collection aFilesCollection, File aDestinationFile)
throws ZipException
{
if (aFilesCollection.size() == 0) return;

FileOutputStream tFOS = null;
org.apache.tools.zip.ZipOutputStream tJOS = null;

try
{
tFOS = new FileOutputStream(aDestinationFile);
tJOS= new org.apache.tools.zip.ZipOutputStream(tFOS);
Iterator tFileIterator = aFilesCollection.iterator();
tJOS.setMethod(ZipOutputStream.DEFLATED);
tJOS.setEncoding("UTF-8");

// Get the files and Zip them
while(tFileIterator.hasNext())
{
File tFile = (File)tFileIterator.next();
String tFileName = tFile.getName();
FileInputStream tFIS = null;
try
{

if(tFile.isDirectory())
{
org.apache.tools.zip.ZipEntry tZipEntry = new org.apache.tools.zip.ZipEntry(tFileName.replace('\\', '/') + "/");
tJOS.putNextEntry(tZipEntry);
tJOS.closeEntry();
}
else
{
tFIS = new FileInputStream(tFile);
org.apache.tools.zip.ZipEntry tZipEntry = new org.apache.tools.zip.ZipEntry(tFileName.replace('\\', '/'));
tZipEntry.setMethod(ZipEntry.DEFLATED);
tJOS.putNextEntry(tZipEntry);
IOHelper.copyStream(tFIS, tJOS);
tFIS.close();
tJOS.closeEntry();
}

}
finally
{
........

Olaf am :

Danke fuer den Code - werde ich mal ausprobieren.

Olaf am :

Habs jetzt so umgebaut, dass keine Umlaute mehr in den Dateinamen verwendet werden und eine aktualisierte Release hochgeladen.

Die Kommentarfunktion wurde vom Besitzer dieses Blogs in diesem Eintrag deaktiviert.