コンボ

コンボ

Bashにこれを行うツールはありますか?

答え1

コンボ

はい、いくつかあります。コンボcoreutils(debianではデフォルトでインストールされています)両方が含まれています。32ベースそして64ビットベース。以下をエンコードまたはデコードできます。

$ printf '%s' "abc" | base64
YWJj

$ printf '%s' "abc" | base64 | base64 -d
abc

echoを使用すると、後に改行文字が追加され、結果としてBase64でエンコードされた文字列が変更される可能性があることを理解してください。

$ echo "abc" | base64
YWJjCg==

パッケージbasezopenssl。後者は通常デフォルトでインストールされますが、前者はそうではありません。

$ printf '%s' "abc" | openssl base64
YWJj

コーディング

ソース文字列は、base64エンコーディングに関係なく、すべてのロケール(コードページ)にエンコードされます。 Base64プログラムは文字ではなくバイトをエンコードします。

$ printf '%s' "éäìǫ" | base64 | base64 -d
éäìǫ

すべてのシステムでまったく同じように動作します。さて、通常のシステムでは、この内容はコマンドラインにも印刷されecho "éäìǫ"ます。éäìǫ

もちろん、ソース文字列があるシステムでエンコードされてから別のロケールを使用するシステムでデコードされると、次のような結果が出る可能性があります。モジバクひも。これはbase64で解決される問題ではなく、文字列エンコーディングを変更して解決される問題です。一緒にいるかもしれないiconv

$ echo -n "Москва" | base64            # in a utf8 locale
0JzQvtGB0LrQstCw

ただし、iso889-5を使用するキリル語ロケールでは(おそらくru_RU.ISO-8859-5ですが、キリル語を使用する他の言語も利用可能です):

$ echo "0JzQvtGB0LrQstCw" | base64 -d
ааОбаКаВаА

$ echo "0JzQvtGB0LrQstCw" | base64 -d | iconv -f utf8 -t iso8859-5
Москва

関連情報