JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

HTML5のURLエンコードとは?エンコードが必要な4種類の文字を徹底解説

URLエンコードとは

URLエンコード(パーセントエンコーディング)とは、URLに直接含めることができない文字や、URL内で特別な意味を持つ文字を、Webブラウザやサーバーが曖昧さなく、かつ普遍的に解釈できる標準的な表現形式へ変換する処理のことです。

たとえば半角スペースは「%20」に、日本語などのマルチバイト文字は「%E3%81%82」のような形式に変換されます。これにより、どんな環境でも同じURLとして正しく扱えるようになります。

エンコードが必要な文字の種類

URLエンコードの対象となる文字は、大きく次の4種類に分類できます。

1. ASCII制御文字

印刷できない文字で、主に出力制御のために使用されるものです。16進数の00〜1F(10進数の0〜31)および7F(127)が該当します。改行やタブなどが代表例で、URLにはそのまま含められません。

2. 非ASCII制御文字

ASCIIの128文字の範囲を超える文字です。この範囲はISO-Latin文字セットの一部であり、いわゆる「上位半分」にあたる16進数の80〜FF(10進数の128〜255)全体を含みます。日本語をはじめとする多言語文字も、ここに分類される仕組みで処理されます。

3. 予約文字(Reserved Characters)

ドル記号($)、アンパサンド(&)、プラス(+)、カンマ(,)、スラッシュ(/)、コロン(:)、セミコロン(;)、等号(=)、疑問符(?)、アットマーク(@)などの特殊文字です。これらはURLの中でクエリ区切りやパラメータの接続など、それぞれ固有の役割を持っています。そのままデータとして使うと意味が衝突してしまうため、必ずエンコードが必要です。

4. 安全でない文字(Unsafe Characters)

スペース、引用符(" ')、小なり記号(<)、大なり記号(>)、ハッシュ記号(#)、パーセント記号(%)、波括弧({ })、縦棒(|)、バックスラッシュ(\)、キャレット(^)、チルダ(~)、角括弧([ ])、グレイブアクセント(`)などが該当します。これらの文字は、ゲートウェイやプロトコルの処理によって誤って解釈されたり、文字化けやセキュリティ上の問題を引き起こしたりする可能性があるため、URLでは避けるべきとされています。

JavaScriptでURLエンコードを行う方法

実務では、JavaScriptのencodeURIComponent()encodeURI()を使うことで簡単にURLエンコードが行えます。encodeURIComponent()は予約文字を含むほぼすべての特殊文字をエンコードするのに適しており、クエリパラメータの値に使います。一方、encodeURI()はURL構造に必要な記号(:/?#[]@!$&'()*+,;= など)を残したままエンコードするため、URL全体を対象にする場合に便利です。

正しくURLエンコードを理解し使い分けることで、多言語対応サイトでも文字化けのない安定したリンクを実現できます。

  1. Windows標準の文字コード表に代わるおすすめフリーツール3選

    インターネットの国際化が進んだ今、世界中の人々がさまざまな言語を使ってコミュニケーションを取っています。しかし、USキーボードレイアウトのままでは、特に東洋圏の言語を入力するのは非常に困難です。そんな悩みを解決するため、Microsoft Windowsにはアクセサリメニューに「文字コード表(Character Map)」というアプリが標準搭載されています。 とはいえ、目的の文字を探すために膨大な文字の中から一つひとつ目で探すのは、かなり骨の折れる作業です。そこで登場したのが、より快適に使えるサードパーティ製の代替ツールや拡張機能です。本記事では、特におすすめの3つのツールをご紹介します。

  2. Outlookで文字化けを解消!文字エンコードの変更方法をわかりやすく解説

    Outlookでメールを受信したとき、本文が意味不明な記号や文字化けして表示された経験はありませんか?送信者から届いたメッセージが正しく読めない場合、多くは文字エンコードの不一致が原因です。この記事では、その原因と解決策をわかりやすく解説します。キーボードで入力した文字は、「エンコード」と呼ばれる複雑な処理を通じてコンピューターに認識され、画面上に対応する文字として表示されます。つまり、どの数値がどの文字に対応するのかを決めているのが、この文字エンコードという仕組みです。また、文字の視覚的な表現は「グリフ(Glyph)」と呼ばれ、さまざまなグリフの集合が「フォント」を構成します。文章のフォント