ホームページ  >  記事  >  バックエンド開発  >  urlencode の後の各 %XX はバイトを表しますか?

urlencode の後の各 %XX はバイトを表しますか?

WBOY
WBOYオリジナル
2016-08-04 09:19:301184ブラウズ

中国語の urlencode の後の各 %XX はバイトを表しますよね?
つまり、urlencode('中') の結果は %XX%XX%XX (utf-8 エンコーディング) になります

返信内容:

中国語の urlencode の後の各 %XX はバイトを表しますよね?
つまり、urlencode('中') の結果は %XX%XX%XX (utf-8 エンコーディング) になります

はい、Unicode が多くのメモリ空間を占有し、拡張が変更されないという問題を解決するために、utf-8 仕様が登場しました。

  1. シングルバイト記号の場合、バイトの最初のビットは 0 に設定され、次の 7 ビットはこの記号の Unicode コードです。したがって、英語の文字の場合、UTF-8 エンコーディングと ASCII コードは同じです。

  2. n バイトのシンボル (n>1) の場合、最初のバイトの最初の n ビットは 1 に設定され、n+1 番目のビットは 0 に設定され、後続のバイトの最初の 2 ビットは 10 に設定されます。言及されていない残りの 2 進ビットはすべて、このシンボルの Unicode コードです。

つまり、UTF-8のエンコード結果は可変長になります。
字的utf-8编码为E4B8AD,所以对应的urlencode为%E4%B8%AD.

はい、URL エンコードは、特殊記号と非 ASCII 文字のデータを 16 進数で表し、各バイト (つまり 2 つの 16 進数) の前にパーセント記号を追加するだけです。これらの非特殊 ASCII 文字の場合、URL エンコード自体がエンコードされます。

同じ漢字でも、GBKエンコーディングの場合は2バイト、UTF-8の場合は3バイトになります。

もちろん、さらに厄介なのは、URL エンコードがわかりにくいことです。たとえば、場所によっては +来表示空格,有的又是用%20,具体情况还是要具体分析。前者对应的是函数是urlencode,后者对应的是rawurlencode。通常前者用在表单数据中(包括URL中的query也就是? 以降の部分が使用されます)、後者は URL パス (ホストの後、クエリの前の部分) で使用されます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。