BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Encoding-Problem beim shell-Befehl (Linux)

Alles zur Programmierung im LibreOffice.
Antworten
Nucra
Beiträge: 2
Registriert: Mi 25. Mär 2020, 12:30

Encoding-Problem beim shell-Befehl (Linux)

Beitrag von Nucra » Mi 25. Mär 2020, 12:54

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)

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

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

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

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.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Nucra
Beiträge: 2
Registriert: Mi 25. Mär 2020, 12:30

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

Beitrag von Nucra » Mi 25. Mär 2020, 21:23

...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!

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

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

Beitrag von gogo » Fr 27. Mär 2020, 09:08

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
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Wanderer
Beiträge: 895
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

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

Beitrag von Wanderer » Mo 20. Apr 2020, 19:22

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
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten