Sonderzeichen Dateiname

MiMa

Top Contributor
Hallo,

ich habe mir eine kleines Tool geschrieben, das Dateinamen umorganisiert.

Jetzt habe ich das Problem, das die Dateien Umlaute und Sonderzeichen enthalten. :lol:
Diese Dateien habe ich auf dem Mac mit dem Textedit geschrieben und auf einem Linux NAS gespeichert. Gespeichert wurden die Dateien als REINEN TEXT.

Anschliessend habe ich das Gesamte Verzeichnis auch mal auf dem Desktop gehabt um zu sehen, ob es da Änderungen gibt.

Um das Problem an zu gehen, habe ich ein Testprogramm gemacht, worin ich gezielt das Problem lokalisieren und hoffentlich beheben kann.

Zusätzlich habe ich noch eine Ausgabe.txt schreiben lassen um zu sehen ob es wirklich das ist, was auch in der Konsole angezeigt wird.

Code und Testdateien habe ich angehangen.

Datei: Die schöne Prinzessin (2008).divx
Ausgabe: Die scho��ne Prinzessin (2008).divx

Der Gedanke der mir kam, war der die Sonderzeichen um zu schreiben wie "o��" =>"ö".
Oder muss das so sein "o��" => "ö", na denke ich eher Weniger in einem Dateinamen, da ist ja dann da Kaufmännische Und drin ?

Wäre das die richtige Richtung ?

Danke

Mi
 

Anhänge

  • Transformer.zip
    13,8 KB · Aufrufe: 5
Zuletzt bearbeitet von einem Moderator:
T

Trolllllll

Gast
mach daraus ein
Code:
oe
und alles ist gut, das passt immer ;-)
 

MiMa

Top Contributor
Ja das würde ich gerne, aber das möchte ich nicht von Hand machen, da es ein paar Tausend Dokumente sind.

Deshalb wollte ich das in meinem Transformer Tool mit einbinden.

Mi.
 
S

SlaterB

Gast
es wird nicht ganz eine Frage klar, jedenfalls mir,
stellst du nur dein fertiges Programm vor oder gibt es noch Probleme?

� sieht nicht grad schön aus in Dateinamen,
erstelle richtige Dateinamen mit ö, evtl. auf mehreren Betriebssystemen,
lies das ein, vergleiche Zeichen für Zeichen mit der �-Variante,
dann sollte doch recht klar sein, was schlecht ist und wie zu ersetzen?
 

MiMa

Top Contributor
Nein ich Stelle hier nicht mein Programm vor.

Ich wollte nur wissen, wie man die Umlaute und Sonderzeichen umbenennen kann. Das ist das letzte Problem um das ich mich kümmern muss, bevor ich das Programm auf meine Dateien los lasse.

Da im Mac Finder, auf der Synology DisksStation in der FileStation die Umlaute richtig Dargestellt werden, ist es mir nur durch die Ecpilse IDE aufgefallen.

Da ich auch nicht genau weiss wofür das Zeichen mit der raute und dem Fragezeichen steht, nehme ich mal an das es so vielleicht funktionieren könnte ??

Code:
if (arrayDokument.toString().contains("o��"))
   {
      System.out.println("Das falsche ö wurde lokalisiert");   			
      
      // Name vom Pfad trennen
      dateiObjekt.setFilmName(arrayDokument.getName().toString());

      // Ersetzen der Zeichen mit Stringoptionen "o��" nach "oe"

      // Film Namen in der Konsole ausgeben
      System.out.println("Der Film Name ist: " + dateiObjekt.getFilmName());
}

Mi
 

Melfis

Aktives Mitglied
Ersetz mal dein FileWriter durch:

Java:
      	  Writer w = new OutputStreamWriter(new FileOutputStream("./DEIN_PFAD/Ausgabe.txt"), System.getProperty("file.encoding"));
      	  BufferedWriter ausgabeObjekt = new BufferedWriter(w);

Und ein wenig Lektüre dazu:
Verwendung von Character Sets in Java

MFG Melfis
 

MiMa

Top Contributor
So ich habe jetzt das hier mal geschrieben

Code:
if (arrayDokument.toString().contains("o��"))
{
   // Austauschen der Zeichen
   dateiObjekt.setFilmName(arrayDokument.toString().replace("o��", "oe"));
   
   // Ausgeben auf die Konsole
   System.out.println("Dokument " + i + " " + dateiObjekt.getFilmName());
             
   // Als File-Objekt umwandeln
   File filmZiel = new File(dateiObjekt.getFilmName());  
                  		
   // Datei umbenennen
   arrayDokument.renameTo(filmZiel);
                    	}

In der Konsole erhalte ich die richten Informationen:

Dokument 2 /Users/michael/Desktop/Transformer/Mediathek/Die scho��ne Prinzessin (2008).divx
Dokument 2 /Users/michael/Desktop/Transformer/Mediathek/Die schoene Prinzessin (2008).divx

Aber das umbennen klappt nicht ?

So jetzt schau ich mal zu euren Tipps.

Wo kann ich denn das Encoding nachschauen (Mac) ?



Danke
Mi
 

Melfis

Aktives Mitglied
Ich glaube ich hab deine Frage noch nicht richtig kapiert. Was von den beiden folgenden Dingen möchtest du machen?

1. Du hast eine "fehlerhafte" Textdatei erstellt und möchtest diese Textdatei einlesen und in das Systemspezifische Charset "übersetzten".

2. Dein Programm im 1# Posting soll die Textdatei richtig erstellen.

MFG Melfis
 

MiMa

Top Contributor
@Melfis

Ja genau das soll es.
Ob die Datei Fehlerhaft ist ????
Auf dem Mac erstellt, und richtig dargestellt, auf dem NAS auch richtig dargestellt.
Ich werde mal Windows öffnen und dann mal auf die Datei schauen.

Ich habe es jetzt soweit geschafft es in der Konsole richtig hin zu biegen, aber das umbennen der Datei ist immer noch ein Problem.

Hier die aktuelle Version des Testprogrammes.

Vielen Dank

Mi
 

Anhänge

  • Transformer.zip
    15,8 KB · Aufrufe: 5

Melfis

Aktives Mitglied
Klappt es nicht wie ich es im Post #8 beschrieben habe?

Du kannst auch statt
Code:
System.getProperty("file.encoding")
"UTF-8" benutzen, oder einen anderen Charset deiner wahl.
 

FArt

Top Contributor
Klappt es nicht wie ich es im Post #8 beschrieben habe?

Du kannst auch statt
Code:
System.getProperty("file.encoding")
"UTF-8" benutzen, oder einen anderen Charset deiner wahl.

Wichtig ist nur, dass es überall das selbe ist... beim lesen einer Datei, beim schreiben der Datei und bei der Anzeige.

Das Encoding des Terminals (Konsole) bekommst du raus, indem du auf der Konsole "locale" eingbibst.
 

Melfis

Aktives Mitglied
@Fart Das ist mir bewusst. Jedoch ließt Java (soweit ich weiß) die Dateinamen/Orderstruktur mit dem systemspezifeschen Charset ein. Intern Arbeitet Java mit Unicode d.h. ich muss mich nur um den Charset der Ausgabe kümmern. Und als gemeinsamer kleinster Nenner könnte UTF-8 herhalten.

[EDIT]Natürlich muss man die Textdatei Datei auch mit einem kompatiblen Editor öffnen. z.B. unterstützt der Windows-Editor folgende Zeichensätze:"Ansi","UTF-8", "Unicode" [/EDIT]
 
Zuletzt bearbeitet:

MiMa

Top Contributor
So ich habe mal das ganze jetzt auch mal unter Windows in das Mediathek Verzeichnis hinein geschaut.
Alles bestens. Die Umlaute der "Die schöne Prinzessin (2008).divx" wurden auf allen System gleich korrekt angezeigt.

Mein Terminal gibt mit folgende Informationen aus:

imac:~ michael$ locale
LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL=

Also kann es nur noch an Eclipse liegen.

Die Writer Einstellungen hatte ich nicht ausprobiert, weil ich diesen wieder entfernt hatte.
Dazu ist noch zu sagen, das die Ausgabe.txt Datei diese raute Fragezeichen Symbole enthielt.
Diese waren auf dem Mac und in Windows gleich.

Wenn ich in Eclipse Juno eine Datei erzeuge und diese Speichere, Fragt er immer nach dem Zeichensatz und ich wähle dann UTF-8 aus.

Mi
 

Melfis

Aktives Mitglied
Wo und wie schreibst/ließt du deine Text-Datei. Bitte poste mal das Code-Stück.
Von der Umwandlung von einzelnen Zeichenfolgen würde ich dir dringend abraten!
 
Zuletzt bearbeitet:

MiMa

Top Contributor
Der Code inkl. Beispieldateien sind im Anhang, aktueller Stand.

Es funktioniert soweit alles, bis auf das implementierte Sonderzeichen.
Mit dem Sonderzeichen funktioniert die Umbenennung des der Datei nicht.

Die Dateien, die habe ich von Hand erstellt und sind nur ein Entwicklungsersatz.
Deshalb gibt es nur ein paar davon.

Mi
 

Anhänge

  • Transformer.zip
    15,2 KB · Aufrufe: 3

FArt

Top Contributor
Dazu ist noch zu sagen, das die Ausgabe.txt Datei diese raute Fragezeichen Symbole enthielt.
Diese waren auf dem Mac und in Windows gleich.
Nur zur Vollständigkeit (noch einmal): es kann sein, dass man alles richtig macht, aber das anzeigende Programm (zur Kontrolle) wieder ein eigenes Encoding verwendet und somit "nur" die Kontrolle falsch ist. Auf der Konsole zieht also die Einstellung des Terminals oder die des Betriebsystems (kann überschrieben sein!). Texteditoren können andere Vorlieben haben (eigene Konfiguration, Fallback auf Betriebsystem, evtl. der Versuch ein passendes Encoding zu ermitteln).

In einer längeren Verarbeitungs- und Transportkette müssen einfach alle das gleiche Encoding verwenden. Ich habe mehr als einen gesehen, der lange Zeit Fehler gesucht hat um festzustellen, dass der eigentliche Prozess funktioniert, nur die Sichtkontrolle daneben ging.

Hat was von Heisenbergsche Unschärfe und Schrödingers Katze ;-)
 

MiMa

Top Contributor
In Eclipse konnte ich noch in den Einstellungen/Editor/Spelling Endcoding einstellen.
Dort stand ASCII US und habe den jetzt auf UTF-8 eingestellt.

Warum die Datei nicht umbenannt wird, hängt damit zusammen, das ich vor dem Umbenennen nocht Prüfe, ob die Datei auch wirklich vorhanden ist. Wenn nicht, wird dieser Codeabschnitt nicht ausgeführt, wenn ja dann macht er es.

Ich denke das es mit dem Umlaut zusammenhängt und bei der Prüfung prüft, sieht anders aus, ist also nicht da und überspringt dann den Code.

Werde den Writer noch mal einbauen und schauen was passiert.

Mi
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
J Sonderzeichen für Griechisch Allgemeine Java-Themen 2
E Sonderzeichen nicht setzbar: Großes Problem bei Programmierung unter Linux Mint mit Virtual Box Allgemeine Java-Themen 5
A Bestimmte Sonderzeichen im Regulären Ausdruck Allgemeine Java-Themen 2
W Sonderzeichen DACH ^ Allgemeine Java-Themen 6
M Kommandozeile und Sonderzeichen Allgemeine Java-Themen 2
A Input/Output Serialisierung Sonderzeichen Allgemeine Java-Themen 3
S Zu .txt inklusive Sonderzeichen Allgemeine Java-Themen 3
X Java String Regex - Sonderzeichen Filtern Allgemeine Java-Themen 5
J HTML-Sonderzeichen ersetzen Allgemeine Java-Themen 2
K _alle_ Sonderzeichen parsen Allgemeine Java-Themen 2
Q Sonderzeichen Ausgeben Allgemeine Java-Themen 8
L Das Sonderzeichen & Allgemeine Java-Themen 14
W Problem bei der Suche (binarySearch) vom deutschen Sonderzeichen "ß" im einem Array Allgemeine Java-Themen 6
data89 (Deutsche) Sonderzeichen in Java Allgemeine Java-Themen 3
W Nicht deustche sonderzeichen mit normalen Zeichenvergleichen Allgemeine Java-Themen 2
G Sonderzeichen für Files Allgemeine Java-Themen 5
M Sonderzeichen in String suchen Allgemeine Java-Themen 4
@ RegEx: Alle Sonderzeichen ausser dem Punkt Allgemeine Java-Themen 4
M Sonderzeichen bzw. deren Erkennung Allgemeine Java-Themen 3
W Sonderzeichen einlesen Allgemeine Java-Themen 3
M [Windows] Aufruf von Java mit Sonderzeichen im Classpath Allgemeine Java-Themen 5
karambara Sonderzeichen-Problem beim Lesen und Speichern von Dateien Allgemeine Java-Themen 6
byte Unicode Sonderzeichen Allgemeine Java-Themen 2
W Sonderzeichen in Access 97 schreiben Allgemeine Java-Themen 2
M Sonderzeichen; Javac auf Lin <-> Win Allgemeine Java-Themen 11
T Html aus einem String strippen + Sonderzeichen ersetzten Allgemeine Java-Themen 2
J sonderzeichen entfernen Allgemeine Java-Themen 6
N HTML Sonderzeichen Allgemeine Java-Themen 4
J URL Objekt zu File Objekt - wie lösche ich Sonderzeichen Allgemeine Java-Themen 3
H Maskieren von Sonderzeichen beim Dateien lesen Allgemeine Java-Themen 2
V Umlaute, sonderzeichen beim HTMLEditiorKit Allgemeine Java-Themen 2
M Sonderzeichen in einem Regex? Allgemeine Java-Themen 2
S Dateiname mit Regex parsen Allgemeine Java-Themen 3
nrg new Reader(dateiname) und getResourceAsStream Allgemeine Java-Themen 17
W Dateiname von geöffneter .jar Allgemeine Java-Themen 15
T Wie bekomme ich den Pfad ohne Dateiname? Allgemeine Java-Themen 2
F Dateiname bei Anhängen mit der Java-MailApi Allgemeine Java-Themen 3
H Dateiname für Quelldatei Allgemeine Java-Themen 5
D JFileChooser Dateiname == Unterverzeichnis Allgemeine Java-Themen 3
G Servlets: Ganzer Pfad und Dateiname des verschickten Forms Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben