私は、Ubuntu Linux(バージョン16.04でもこの場合は無関係です)で背景を取得して設定する簡単なスクリプトを作成しています。問題は、私のフォルダ名がUTF-8でエンコードされていることです(特に中国語)。このように、現在の壁紙へのパスを取得することのようなので、失敗します。perlのサブプロセスからUTF文字列を取得する
file:///home/xieerqi/%E4%B8%8B%E8%BD%BD/testimage.jpg
そこで、質問です:
my $user_background=qx/gsettings get org.gnome.desktop.background picture-uri/;
出力print $user_background
の私は適切にエンコードされたのですかどのようにシェルコマンドから/復号化された文字列
my $unicode_String=Encode::decode('utf-8', $user_background);
:perlの
に私はこれを試していませんでした
が動作しませんでした。 binmode(STDOUT,":utf8");
を追加
もuse utf8;
がバックグラウンドで作業をして設定することと同じ文字列を使用して、不思議
を動作しませんでした追加
を助けにはなりませんでした。
URLを要求したため、 '%E4%B8%8B'は** URLエンコードされています**。URLを構成する文字はすでに7ビットのASCII文字なので、UTF-8でデコードすると何も表示されません。 URLが必要なので、適切なパスが必要な場合はURLをデコードしてから、UTF-8デコードを適用する必要があります。 – nneonneo
@mneonneo OK、どうすればURLデコードできますか? 'gsettings list-recursively org.gnome.desktop.background'を実行すると、' picture-uri'というキーが1つしかないことがわかります。デコードするオプションはありません –
これまでのところ、多くのヒントがありますこれはURLエンコードされています。はい、私はそれを取得します。しかし、そのURLをデコードする方法は何ですか?どのように適切な答えのように見えないかを示すことなく "魚に行く"と言うだけです。 –