YouTube の URL を再度 base64 にエンコードしようとしたところ、= の後の値は最初の 2 文字を除いて変更されませんでした。これはすでに base64 になっているのでしょうか? 変換された URL:http://www.youtube.com/watch?v=CvUN8qg9lsk
出力(b64): http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DCvUN8qg9lsk
なぜ同じなのでしょうか?
答え1
YouTube の URL を再度 base64 にエンコードしようとしたところ、最初の 2 文字を除いて、符号の後の値は
=
変更されませんでした。最後の部分はすでに base64 になっているのでしょうか?
=
変換されるマイナス記号は%3D
、はい、CvUN8qg9lsk
すでに Base64 でエンコードされています。
なぜ同じなのでしょうか?
@LPChip が指摘しているように、使用している関数は URL エンコーダーであり、URL 内の特殊文字 (、、、および) のみを:
16進数の同等文字 (通常の文字ではない) に変換します。/
?
+
=
Base64 には他のエンコードも含まれますか?
URLエンコーディングはBase64エンコーディングの一種と考えられていますが、この用語は潜在的に過剰に解釈される可能性があることに注意する必要があります。ウィキペディア(強調追加):
「Base64は類似したバイナリからテキストへのエンコード方式のグループバイナリ データを ASCII 文字列形式で radix-64 表現に変換して表します。"
つまり、base64
使用している関数はエンコード/デコードするためのものではありませんCvUN8qg9lsk
。
ちょっとした補足ですが、=
(パディング) を追加して、たとえば「通常の」Base64 エンコーダー/デコーダーで翻訳しようとするとCvUN8qg9lsk=
、うまくいく可能性があります。とはいえ、価値のあるもの (つまり、人間にとって意味のあるもの) が得られる可能性は低いです。YouTube が ID を取得するために使用する値は、Google/YouTube 以外のものとはおそらく関係のない、非常に特殊なアルゴリズムの産物である可能性が非常に高いです。