IMAPサーバーから取得したutf7ファイル名を正しくデコードする方法

IMAPサーバーから取得したutf7ファイル名を正しくデコードする方法

IMAPサーバーからいくつかのディレクトリをダウンロードしました。

例:

$ find . -maxdepth 1
.
./&BCEEPwQwBDw-
./&BCMENAQwBDsENQQ9BD0ESwQ1-
./inbox
./&BCcENQRABD0EPgQyBDgEOgQ4-
./&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-
./&BBgEQQRFBD4ENARPBEkEOAQ1-
./Archive

これはUTF-7でエンコードされたキリル文字の名前です。私が知る限り、UTF-7エンコーディング単位はすべて127未満の有効なUnicodeコードポイントであり、有効なASCIIでもあります。つまり、好きな場所にコピー、貼り付け、パイプ、猫を表示できます。

変換してみましょう:

$ ls | iconv -f utf7 -t utf8
&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-/
&BBgEQQRFBD4ENARPBEkEOAQ1-/
&BCEEPwQwBDw-/
&BCMENAQwBDsENQQ9BD0ESwQ1-/
&BCcENQRABD0EPgQyBDgEOgQ4-/
Archive/
inbox/

ワット?効果がないですか?iconv -lutf-7とutf-8をリストします。

何が問題なの?

ベストアンサー1

キリル文字をUTF8からUTF7に変換するクイックテスト

echo 'Here we go. Це коротке речення' | iconv -f utf-8 -t utf-7
Here we go. +BCYENQ +BDoEPgRABD4EQgQ6BDU +BEAENQRHBDUEPQQ9BE8

一つ読んでくださいUTF7の説明+Encoding UTF7ディレクトリリストには、各エンコーディング文字列の前にある必要があることを(おおよそ言うと)知ることができます。

ご覧のように、抽出されたデータを次に変換しても有効なコードポイントは生成されません&+

echo '&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-/' | tr '&' + | iconv -f utf-7 -t utf-8
От
iconv: (stdin):1:2: cannot convert

&ただし、ファイル名自体を使用している場合に切り替えると、有効な変換が得られます+

echo '&BCMENAQwBDsENQQ9BD0ESwQ1-' | tr '&' + | iconv -f utf-7 -t utf-8
Удаленные

おすすめ記事