Encoding

xdg-open 在 LTSP 上使用了錯誤的字元編碼

  • May 5, 2015

我正在嘗試在 LTSP 系統上的本地應用程序中打開文件。但是如果路徑名包含重音字元,例如é,則無法打開它,因為 URI 似乎編碼錯誤。

問題似乎在於 gvfs-open 發送文件 URI 的方式:

gvfs-open /home/user/testé/test.mov
VLC is unable to open the MRL 'file:///home/user/test303251/test.mov'.

從應用程序本身打開相同的文件(使用 File > Open..)不會產生任何問題。

空格和逗號的編碼方式似乎不同,使用 %20,不會產生任何問題。

gvfs-open /home/user/this is testé/test.mov
VLC is unable to open the MRL 'file:///home/user/this%20is%20test303251/test.mov'.

知道如何解決這個問題嗎?

我找到了解決方案並為此送出了一個錯誤: https ://bugs.launchpad.net/ubuntu/+source/ltsp/+bug/1451915

這是由 LTSP 打開本地應用程序的方式引起的:LTSP 設置了一個包含命令和參數的 X 屬性,該屬性在客戶端上讀取然後執行。

/usr/bin/vlc --started-from-file %U

被客戶替換為

xprop -root -f LTSP_COMMAND 8s -set LTSP_COMMAND "/usr/bin/vlc --started-from-file %U"

但這使用 8 位編碼。如果您將“8s”更改為“8u”,它將使用 UTF-8 unicode 字元串,這似乎可以解決問題。

需要修改的文件是:

/opt/ltsp/i386/usr/bin/ltsp-genmenu

引用自:https://serverfault.com/questions/684054