[erledigt] Umlaute werden für URL falsch verarbeitet

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

[erledigt] Umlaute werden für URL falsch verarbeitet

Beitrag von juetho »

Ich lese zunächst vorhandene Dateinamen in eine Base-Datenbanktabelle ein (also HSQL). Das mache ich, weil ich per CheckBox auswählen will, welche Dateien zu bearbeiten sind; damit das alles innerhalb eines Formulars geschieht, war dieser Weg über die Hilfstabelle am einfachsten. Anschließend sollen die Dateien, die markiert sind, in einer Schleife geöffnet und bearbeitet/ausgewertet werden.

Problem: Wenn ein Dateiname Umlaute enthält, wird die URL nicht korrekt erstellt oder verarbeitet. Die wesentlichen Teile des Makros sind:

Code: Alles auswählen

sDir = "File:///K:/Waldorfschule/" & iJahr & "/"
rem in einer Schleife den nächsten Dateinamen bestimmen, Datei öffnen
url = converttourl( sDir & oForm.getString(3) )  rem Variante 1
'url = sDir & oForm.getString(3)     rem Variante 2
oWordDoc = StarDesktop.loadComponentFromURL(url, "_blank", 0, aProps() )
oForm.getString(3) liefert den Dateinamen. Bei "Schulz_Klasse_n_Fach.doc" gibt es keine Probleme, aber mit "Müller_Klasse_n_Fach.doc" knallt es:
  1. Variante 1 setzt den Umlaut als Unicode um und liefert die Fehlermeldung:
    Unsupported URL <file:///K:/Waldorfschule/2013/M%C3%BCller_Klasse_n_Fach.doc>
  2. Variante 2 schreibt den Dateinamen korrekt, aber die URL wird trotzdem nicht akzeptiert:
    Unsupported URL <file:///K:/Waldorfschule/2013/Müller_Klasse_n_Fach.doc>
  3. Es hilft auch nicht, in sDir die Windows-Variante des Pfads ohne "file:///" und mit Backslash einzutragen.
Ich dachte, die Umlaute werden bei converttourl richtig verarbeitet. Möglicherweise stört das Zwischenspeichern in der Tabelle. Ich bitte um Tipps (gerne auch als Umweg, aber bitte nicht mit Änderung der Dateinamen). Danke! Jürgen
Zuletzt geändert von juetho am Mo, 29.04.2013 16:17, insgesamt 1-mal geändert.
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Umlaute werden für URL falsch verarbeitet

Beitrag von DPunch »

Servus

Das Problem ist mit OOo 3.2.1 nicht reproduzierbar und wage mal zu behaupten, das hier das Problem nicht in den Umlauten zu suchen ist.

Was passiert denn, wenn Du folgendes ausführst:

Code: Alles auswählen

	sDir = "File:///K:/Waldorfschule/" & iJahr & "/"
	url = converttourl( sDir & "test_" & oForm.getString(3) )
	newDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Array() )
	newDoc.storeAsUrl(url,Array())
	newDoc.close(False)
?
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Umlaute werden für URL falsch verarbeitet

Beitrag von juetho »

Hallo, dein Hinweis brachte zwar keine Lösung, hat mich aber in die Richtung der passenden Versuche gestoßen.
DPunch hat geschrieben:... nicht reproduzierbar und wage mal zu behaupten, das hier das Problem nicht in den Umlauten zu suchen ist.
Das kann ich jetzt bestätigen. Ich bin deinem Vorschlag gefolgt (mit "/swriter" statt "/scalc"), und es funktioniert mit beiden Varianten (converttourl und direkter Addition der Strings). Damit ist der wichtigste Unterschied zwischen deinem und meinem Code der Inhalt des Array of PropertyValue; und das hat mich zur Lösung gebracht.

Bei meinen bisherigen Versuchen hatte ich mich auf Hidden + ReadOnly beschränkt. Auf FilterName hatte ich verzichtet, weil Writer "normalerweise" automatisch den benötigten Filter anhand der Extension auswählt (es kommen doc, docx und odt vor). Das scheint in der Kombination mit Hidden/ReadOnly nicht zu genügen (vielleicht gibt es auch noch andere Gründe).

Wenn ich als weitere Eigenschaft "FilterName" hinzufüge, klappt es (jedenfalls bei den bisherigen Versuchen).

Fazit: Nicht die Umlaute waren das Problem, sondern der Filter, der jedenfalls bei diesem Arbeitsablauf angegeben werden muss. Danke für den Ratschlag! Jürgen

Nachtrag: Eine Problembeschreibung muss auf das Wesentliche reduziert werden, aber wichtige Informationen dürfen nicht unter den Tisch fallen. Hier ist genau das passiert, weil ich bei der Fehlermeldung einen falschen Zusammenhang vermutet hatte (denn die Dateien unterschieden sich nur durch die Umlaute im Dateinamen). Dass die Argumente Hidden + ReadOnly von Bedeutung sein könnten, hatte ich nicht gedacht; deshalb fehlte diese Information - und genau die wäre wichtig gewesen. :shock:
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Antworten