Seite 1 von 1

Encoding-Problem beim shell-Befehl (Linux)

Verfasst: Mi 25. Mär 2020, 12:54
von Nucra
Liebe Forumsteilnehmer,

folgendes kleine Makro, um zu einem geöffneten Office-Dokument schnell sein "beinhaltende Verzeichnis" mit einem Dateimanager nach Wahl (in meinem Fall konqueror) öffnen zu können, hat sich seit vielen Jahren bewährt.

Code: Alles auswählen

sub FilemanagerHere
dim strPath As String
  if ThisComponent.URL = "" Then
  	MsgBox "Dokument wurde noch gar nicht gespeichert""
  	Exit Sub
  Else
	If Not BasicLibraries.isLibraryLoaded("Tools") then BasicLibraries.loadLibrary("Tools")
	strPath = DirectoryNameoutofPath(ConvertFromUrl(ThisComponent.URL),"/")
	MsgBox(strPath) ' Bis hierher alles korrekt
    Shell ("/usr/bin/konqueror", 1, "'" & strPath & "'") 
  End if
end sub
Neuerdings - leider kann ich den genauen Zeitpunkt nicht mehr recherchieren - kommt es allerdings zu einem Fehler, wenn im Pfadnamen des zu öffnenden Verzeichnisses (also strPath) Sonderzeichen vorkommen.
Anstelle eines "ö" beispielsweise wird in das Verzeichnisfeld des Dateimanagers "��" eingefügt und der gewünschte Ordner daher "nicht gefunden".

Nachdem die testweise eingefügte MsgBox()-Anweisung noch das korrekte Sonderzeichen anzeigt, nehme ich an, das Problem dürfte in einer fehlerhaften Interpretation des übergebenen strPath liegen.

Über diese Vermutung komme aber seit Tagen nicht mehr hinaus, obwohl ich schon alle mehr oder weniger naheliegenden Einstellungen unter Extras/Optionen/Spracheinstellungen ohne Änderung verändert habe und auch keine Möglichkeit einer Umwandlungsfunktion oder expliziten Angabe des Encodings für den Shell-Aufruf finden konnte.

Wäre daher für alle Hinweise und Ideen dankbar, wie man das Problem lösen (oder zur Not auch nur kreativ umgehen) könnte.

Kontext ist: KDE neon 5.18 (also im wesentlichen Ubuntu 18.04 LTS) mit
LibreOffice Version: 6.4.0.3 (Build-ID: b0a288ab3d2d4774cb44b62f04d5d28733ac6df8,
CPU-Threads: 4; BS: Linux 4.15; UI-Render: Standard; VCL: kf5; Gebietsschema: de-DE (de_DE.UTF-8); UI-Sprache: de-DE
Calc: threaded)

Re: Encoding-Problem beim shell-Befehl (Linux)

Verfasst: Mi 25. Mär 2020, 19:14
von gogo

Code: Alles auswählen

Shell ("/usr/bin/dolphin", 1, "'" & strPath & "'") 
und

Code: Alles auswählen

Shell ("/usr/bin/dolphin '" & strPath & "'") 
funktioniert beides - Konqueror hab' ich leider nicht drauf.

Re: Encoding-Problem beim shell-Befehl (Linux)

Verfasst: Mi 25. Mär 2020, 21:23
von Nucra
...macht nichts,

Code: Alles auswählen

Shell ("/usr/bin/dolphin", 1, "'" & strPath & "'") 
habe ich der Vollständigkeit halber ebenfalls getestet und es schlägt bei mir in der gleichen oben beschriebenen Weise fehl.
Danke trotzdem, gogo!

Re: Encoding-Problem beim shell-Befehl (Linux)

Verfasst: Fr 27. Mär 2020, 09:08
von gogo
der Dolphin-Befehl funktioniert bei mir - ich habe ein deutsches Kubuntu. Evtl hast Du auf Englisch installiert? Wenn Du im Terminal auf die "z"-Taste drückst kommt dann ein z oder ein y? Versuch' mal ein copy/paste aus der MSG-Box ins Terminal. Du solltest den Messagetext in der MSG-Box markieren und kopieren können - wird aber vermutlich nicht viel bringen.
evtl wäre noch ein bash-script wie folgendes hilfreich:
Datei heisst /home/ich/testbash

Code: Alles auswählen

#!/bin/bash
echo $1 > /tmp/makrotest
testbash asl ausführbar markieren ;)

Zeile im Makro:

Code: Alles auswählen

Shell ("/home/ich/testbash '" & strPath & "'")
cat /tmp/makrotest liefert dann den Inhalt

die Umlaute sind bei mir richtig angekommen

Re: Encoding-Problem beim shell-Befehl (Linux)

Verfasst: Mo 20. Apr 2020, 19:22
von Wanderer
Hallo,

Ich würde annehmen, dass die verwendete Shell eventuell nicht auf UTF8 sondern auf einen klassischen 8-bit Zeichensatz wie 8859-1 eingestellt ist.
Du könntest den folgenden Aufruf von Python zum Anzeigen nutzen.

Code: Alles auswählen

python -c "import sys; print(sys.stdout.encoding)"
Wenn da nicht UTF8 rauskommt müsste man rausfinden wie Deine bash umgestellt werden kann oder wie man den Pfad vorher transformiert.

Mfg, Jörn