URLパーセントエンコーディングと記号文字

1.パーセントエンコード

パーセントエンコーディングは、8ビット文字エンコーディングを使用したエンコーディングメカニズムです。これらのエンコーディングは、URLのコンテキストで特定の意味を持ちます。URLエンコードと呼ばれることもあります。このコードは、英語の文字置換「%」と、それに続く置換文字のASCII16進表現で構成されています。

エンコードする必要のある特殊文字は次のとおりです。

特殊文字 パーセントコーディング
%3A
/ %2F
%3F
@ %40
$ %24
%26
= %3D
%25

詳細については、https//developer.mozilla.org/zh-CN/docs/Glossary/percent-encodingをご覧ください。

2.文字エンティティ

予約した文字をHTMLで正しく表示したい場合は、HTMLソースコードの文字に置き換える必要があります。HTMLの便利な文字エンティティ:

結果を示す 説明 エンティティ名 エンティティ番号
スペース    
< サイン未満 &lt; &#60;
>> 大なり記号 &gt; &#62;
そして署名する &amp; &#38;
「」 引用符 &quot; &#34;
' アポストロフィ &apos; (IEはサポートしていません) &#39;
¥ 元(円) &yen; &#165;
© 著作権 &copy; &#169;
® 商標 &reg; &#174;
商標 &trade; &#8482;
×× 乗算記号 &times; &#215;
÷ 除算記号 &divide; &#247;

詳細については、https//www.w3school.com.cn/tags/html_ref_entities.htmlをご覧ください。

3.文字エンティティがURLに表示されます

実際、上記の文字から、パーセンテージエンコードと対応する文字エンティティの両方を持つ特殊文字がたくさんあるので、次のシナリオを考えてみましょう。

HTMLソースドキュメントにURLリンクがあり、URLに「&」文字があります。「&」文字を%26または&として正しくエンコードする方法は?

  • URLリンクがページでのレンダリング専用である場合、それは純粋なHTMLコンテンツと見なすことができるため、リンクコンテンツはエンティティ文字ルールに従って置き換える必要があります。
  • URL接続がリダイレクトのために<a>タグに配置されている場合、URLアドレスを正しく解析できるようにするには、コンテンツをパーセントエンコード形式に従ってエンコードする必要があります。

たとえば、次のコードを使用してhtmlファイルを処理する場合:

String htmlContext = "<body>http://localhost/path?age=123&name=ddd</body>" ;
String html = org.apache.commons.lang.StringEscapeUtils.escapeHtml(htmlContext) ;

次に、最終的な出力htmlコンテンツは次のとおりです。

&lt;body&gt;http://localhost/path?age=123&amp;name=ddd&lt;/body&gt;

URLの「&」文字が「&amp;」に置き換えられいることがわかりますが、これはおそらく私たちが望んでいることではありません。「&」のパーセンテージを「%26」にエンコードする必要があります

使用する場合

String html = java.net.URLEncoder.encode(htmlContext,"UTF-8")

次に、最終的な出力htmlコンテンツは次のとおりです。

%3Cbody%3Ehttp%3A%2F%2Flocalhost%2Fpath%3Fage%3D123%26name%3Dddd%3C%2Fbody%3E

もちろん、正しいアプローチは、パーセンテージエンコード後にハイパーリンクURLをHTMLドキュメントに挿入してから、HTMLドキュメントの文字エンティティを置き換えることです。

おすすめ

転載: blog.51cto.com/dengshuangfu/2675342