19

理想的には、表示可能example.com/resources/äFg4вNгё5な文字の最小数のようなものが必要ですが、HTTP 経由で送信する前にパーセントでエンコードする必要があることは気にしないでください。

128b UUID を最小数の可視文字に効率的にエンコードし、結果に URL を壊す文字が含まれないようにするスキームを教えてもらえますか?

4

2 に答える 2

22

Base-64はこれに適しています。

{098ef7bc-a96c-43a9-927a-912fc7471ba2}

次のようにエンコードできます

vPeOCWypqUOSepEvx0cbog

文字列の長さは常に4の倍数になるため、最後の通常の等号は削除できます。また、andの代わりに+/安全な文字を使用できます。次から2つ選択できます。- . _ ~

詳しくは:

于 2012-07-15T11:20:07.600 に答える
5

URLセーフなbase64文字列を使用しています。以下は、これを行う Python コードの一部です*

最後の行は、Base 64 エンコーディングが末尾に付けるのが好きな「=」または「==」記号を削除します。これらは文字を URL に挿入することをより困難にし、情報の逆エンコードにのみ必要であり、必要ではありません。ここで行われます。

import base64
import uuid

# get a UUID - URL safe, Base64
def get_a_Uuid():
    r_uuid = base64.urlsafe_b64encode(uuid.uuid4().bytes)
    return r_uuid.replace('=', '')

* これ標準に従います: base64.urlsafe_b64encodeRFC 3548 および 4648 に従いますhttps://docs.python.org/2/library/base64.htmlを参照してください。RFC 4648 §3.2==参照してください。UUID/GUID はRFC 4122で指定されています。 §4.1 フォーマットには、「UUID フォーマットは 16 オクテットです」と記載されています。-関数は、これらの 16 オクテットをエンコードします。 base64

于 2013-08-29T18:19:28.390 に答える