【ソフトウェア開発技術】URLで日本語や特殊記号を扱う!「パーセントエンコーディング」|情報処理問題1000本ノック
ITパスポート、基本情報技術者試験、応用情報技術者試験のWeb技術・HTTPプロトコル分野で頻出の必須テーマ。「パーセントエンコーディング(URLエンコーディング)」の仕組みと対象文字を攻略しましょう。
1. 【 問題 】:テクノロジ系(Web技術・URI仕様)
【 問題 】 Webで利用されるURI(URL)の仕様に関する記述です。URIの中で直接使用できない日本語などのマルチバイト文字や、制御文字、特定の記号などを送信する際に、文字コード(UTF-8等)の各バイト値を「%XX」(XXは16進数)という形式の文字列に変換して表記するエンコード方式は、次のうちどれか。
(ア)Base64エンコーディング
(イ)パーセントエンコーディング(URLエンコーディング)
(ウ)Punycode(ピニーコード)
(エ)HTMLエンティティ(実体参照)
2. 正解:
正解:(イ)パーセントエンコーディング(URLエンコーディング)
3. 解説:「『% + 16進数2桁』で安全なアスキー文字に置き換える!」
URI規格(RFC 3986)で直接使える文字は、半角英数字と一部の記号(`-`, `_`, `.`, `~` など)に限られています。
そのため、日本語やスペースなどの使えない文字を送信する際は、文字コードの各バイトを `%16進数`(例: スペースは `%20`、日本語の「あ」はUTF-8で `%E3%81%82`)という安全な形式にエスケープ(変換)します。
| エンコード方式 | 変換の形式・特徴 | 主な用途・利用場所 |
|---|---|---|
| (イ)パーセント エンコーディング |
「%XX」(XXは16進数)形式に変換。 (例:スペース → `%20`) |
URI(URL)のパスやクエリ文字列(GETパラメータ)での非ASCII文字・記号の指定。 |
| (ア)Base64 | 画像やバイナリデータを英数64文字(`A-Z, a-z, 0-9, +, /`)に変換。 | 電子メール(MIME)での画像添付や、Data URIによる埋め込み。 |
| (ウ)Punycode | 日本語ドメイン等を「`xn--`」から始まるASCII文字列に変換。 | 国際化ドメイン名(IDN)のDNS解決。 |
| (エ)HTMLエンティティ | `<` を `<`、`>` を `>` などに変換。 | XSS(クロスサイトスクリプティング)対策・HTML本文のエスケープ。 |
1. 理解のコツ:
・Webで検索した際、ブラウザのアドレス欄にある「https://example.com/search?q=%E6%83%85%E5%A0%B1」といった長い `%` だらけの文字列。あれこそがパーセントエンコーディングされた日本語テキストです。
2. 試験対策の視点:
・問題文に「URI/URLで利用」「日本語や記号」「%XX」「16進数2桁」と出たら、迷わずパーセントエンコーディング(URLエンコーディング)を選択しましょう!
・「電子メールに画像を添付(Base64)」や「日本語ドメイン名(Punycode)」との用途の違いもセットでよく問われます。
4. まとめ
URI内で利用できない日本語や特殊文字を「%XX」(16進数)の形式に変換して安全に送信する技術。これがパーセントエンコーディングです。Base64やPunycodeなど他の変換方式との用途の違いも含めて完璧に整理しておきましょう!