読み込み中...

JavaScriptでurlencodeを習得!5つの使い方とサンプルコード

初心者がJavaScriptでurlencodeを学ぶための徹底解説記事 JS
この記事は約7分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、JavaScriptでurlencodeを使って文字列のエンコードができるようになります。

初心者の方でもわかりやすいように、基本から応用例まで解説していきますので、最後までお付き合いください!

●JavaScriptでのurlencodeとは

JavaScriptでのurlencodeは、文字列をURLエンコードする処理です。

URLエンコードとは、URLに使用できない文字や特殊文字を、扱いやすい形式に変換することを言います。

○urlencodeの基本

JavaScriptでは、encodeURIComponent()関数を使って文字列をURLエンコードします。

これにより、URLに使用できない文字や特殊文字を、扱いやすい形式に変換できます。

●urlencodeの使い方

ここでは、JavaScriptでurlencodeを使う3つの基本的な例を紹介します。

○サンプルコード1:文字列をエンコードする

この例では、encodeURIComponent()関数を使って文字列をURLエンコードしています。

const str = "こんにちは、世界!";
const encodedStr = encodeURIComponent(str);
console.log(encodedStr); // %E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%E4%B8%96%E7%95%8C%EF%BC%81

○サンプルコード2:URLパラメータをエンコードする

このコードでは、URLパラメータをエンコードする方法を紹介しています。

この例では、encodeURIComponent()関数を使って、URLパラメータの値をURLエンコードし、その後URLに組み込んでいます。

const baseUrl = "https://example.com/search?";
const queryParam = "query";
const queryValue = "JavaScript urlencode";
const encodedQueryParam = encodeURIComponent(queryParam);
const encodedQueryValue = encodeURIComponent(queryValue);
const url = `${baseUrl}${encodedQueryParam}=${encodedQueryValue}`;
console.log(url); // https://example.com/search?query=JavaScript%20urlencode

○サンプルコード3:フォームデータをエンコードする

このコードでは、フォームデータをエンコードする方法を紹介しています。

この例では、encodeURIComponent()関数を使って、フォームの入力値をURLエンコードしています。

<form id="myForm">
  <input type="text" name="username" placeholder="ユーザ名" />
  <input type="submit" value="送信" />
</form>

<script>
document.getElementById("myForm").addEventListener("submit", (event) => {
  event.preventDefault();
  const formData = new FormData(event.target);
  const encodedData = new URLSearchParams(formData).toString();
  console.log(encodedData); // username=%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E5%90%8D
});
</script>

●応用例とサンプルコード

ここでは、JavaScriptのurlencodeを応用した2つの例を紹介します。

○サンプルコード4:AJAX通信でのurlencode利用

このコードでは、AJAX通信でURLエンコードされたデータを送信する方法を紹介しています。

この例では、encodeURIComponent()関数を使って、送信するデータをURLエンコードしています。

const url = "https://example.com/api/search";
const query = "JavaScript urlencode";
const encodedQuery = encodeURIComponent(query);
const dataToSend = `query=${encodedQuery}`;

fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  body: dataToSend
})
  .then((response) => response.json())
  .then((data) => console.log(data));

○サンプルコード5:リンク先URLの動的生成

このコードでは、リンク先URLを動的に生成する方法を紹介しています。

この例では、encodeURIComponent()関数を使って、リンク先URLのパラメータをURLエンコードしています。

<a id="myLink" href="#">リンク</a>

<script>
const baseUrl = "https://example.com/search?";
const queryParam = "query";
const queryValue = "JavaScript urlencode";
const encodedQueryParam = encodeURIComponent(queryParam);
const encodedQueryValue = encodeURIComponent(queryValue);
const url = `${baseUrl}${encodedQueryParam}=${encodedQueryValue}`;

document.getElementById("myLink").href = url;
</script>

●注意点と対処法

JavaScriptのurlencodeに関する注意点と、それに対処する方法を説明します。

  1. 文字コードの違いに注意

    JavaScriptのencodeURIComponent()関数は、UTF-8エンコードでURLエンコードを行います。
    他のエンコーディング方式を使用している場合、文字化けが発生することがあります。この問題に対処するには、サーバー側でのデコード処理もUTF-8で行うように設定します。
  2. encodeURI()encodeURIComponent()の使い分け

    encodeURI()は、URL全体をエンコードする際に使用します。
    一方、encodeURIComponent()は、URLのパラメータ部分をエンコードする際に使用します。
    適切な関数を使用することで、正しくURLエンコードを行うことができます。

●カスタマイズ方法

JavaScriptのurlencodeをカスタマイズする方法を紹介します。

特定の文字だけをエンコードする

encodeURIComponent()を使って、特定の文字だけをエンコードするカスタム関数を作成することができます。
例えば、スペースだけをエンコードする関数は次のようになります。

function customEncode(str) {
  return str.replace(/\s/g, (match) => {
    return encodeURIComponent(match);
  });
}

エンコードのルールを変更する

独自のエンコードルールを適用するカスタム関数を作成することができます。
例えば、アルファベット以外の文字を16進数表現に変換する関数は次のようになります。

function customEncode(str) {
  return str.replace(/[^a-zA-Z]/g, (match) => {
    return "%" + match.charCodeAt(0).toString(16);
  });
}

まとめ

この記事では、JavaScriptのurlencodeについて、基本的な使い方から応用例、注意点、カスタマイズ方法まで詳しく解説しました。

これであなたも、JavaScriptのurlencodeを使ったURLエンコードの処理を簡単に実装できるようになります。

上手に活用して、安全で効果的なWebアプリケーションを開発してください。