広告

【JavaScript】URLエンコード・デコード (UTF-8/SJIS)【encoding.js】

【JavaScript】URLエンコード・デコード (UTF-8/SJIS)【encoding.js】 JavaScript

当サイトではアフィリエイト広告を利用しています。

広告

はじめに

今回はJavaScriptを使って、URLエンコード・デコードを行います。

是非、参考にしてみてください。

URLエンコードとは

URLエンコードは、URLに含めることができない特殊文字を「%」記号と16進数で表現する方法です。
これにより、安全にウェブ上で情報の送受信が可能になります。

例えば半角スペースは「%20」、アンパサンド「&」は「%26」に置き換えられます。

URLは特定の文字しか含められないため、クエリパラメータなどで特殊文字を使用する場合はURLエンコードが必要です。

URLデコードとは

URLデコードは、エンコードされたURLを元の形式に戻すことです。

URLデコードは基本的にエンコードの逆の作業を行います。
エンコード時に特殊文字が「%」記号に続く2つの16進数文字に変換されていますので、デコード時にはこれを元の特殊文字に戻します。

多くのプログラミング言語には、デコードするための関数が用意されています。

encoding.jsのインストール

encoding.jsはNPMで導入することができます。

$ npm install --save encoding-japanese

importで読み込む方法は以下です。

import Encoding from "encoding-japanese";

CDNでも導入可能です。

encoding-japanese – Libraries – cdnjs – The #1 free and open source CDN built to make life easier for developers
Converts character encoding. – Simple. Fast. Reliable. Content delivery at its finest. cdnjs is a free and open-source C…

CDNの場合は、Headタグに以下のように定義します。

<html>
  <head>
    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/encoding-japanese/2.0.0/encoding.min.js"
      integrity="sha512-AhAMtLXTbhq+dyODjwnLcSlytykROxgUhR+gDZmRavVCNj6Gjta5l+8TqGAyLZiNsvJhh3J83ElyhU+5dS2OZw=="
      crossorigin="anonymous"
      referrerpolicy="no-referrer"
    ></script>

  </head>
  <body>
...
  </body>
</html>

URLエンコード

URLエンコードについては、以下のコードで実現できます。
エンコードしたい文字列を指定します。

const encArray = Encoding.stringToCode("URLエンコード・デコード");
const enc = Encoding.urlEncode(encArray);
console.log(enc);

以下のようにエンコードされた文字列を取得することができました。

URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB%E3%83%87%E3%82%B3%E3%83%BC%E3%83%89

UTF-8の文字列をShift JISに変換してURLエンコードする実装です。

const encArray = Encoding.stringToCode("URLエンコード・デコード");
// Shift JISへ変換
const sjisArray = Encoding.convert(encArray, "SJIS");
const enc = Encoding.urlEncode(sjisArray);
console.log(enc);

以下のようにエンコードされた文字列を取得することができました。

URL%83G%83%93%83R%81%5B%83h%81E%83f%83R%81%5B%83h

URLデコード

UTF-8の文字列のURLデコードについては、以下のコードで実現できます。
デコードしたい文字列を指定します。

const dec = Encoding.urlDecode(
    "URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB%E3%83%87%E3%82%B3%E3%83%BC%E3%83%89"
);
const decArray = Encoding.codeToString(dec);
const utfArray = Encoding.convert(decArray, {
    to: "UNICODE",
    from: "UTF8",
});
console.log(utfArray);

UTF-8へ変換しています。

以下のようにエンコード前の文字列を取得することができました。

URLエンコード・デコード

Shift JISでURLエンコードされた文字列をデコードする実装です。

const dec = Encoding.urlDecode(
    "URL%83G%83%93%83R%81%5B%83h%81E%83f%83R%81%5B%83h"
);
const decArray = Encoding.codeToString(dec);
const sjisArray = Encoding.convert(decArray, {
    to: "UNICODE",
    from: "SJIS",
});
console.log(sjisArray);

以下のようにエンコード前の文字列を取得することができました。

URLエンコード・デコード

デコードを行った後に、文字コードの変換をしています。

チグサツール

URLエンコード・デコードにつきまして、以下のツールでも確認ができます。

URLエンコード・デコード | チグサツール
手軽にURLエンコード・デコードを行うことができるツールです。

ブラウザ上で動作するため、簡単に試すことができます。

チグサツール URLエンコード・デコード

さいごに

今回はJavaScriptを使って、URLエンコード・デコードを行いました。
是非参考にしてみてください。

JavaScriptプログラミング
広告

個人開発

千草 @chigusaweb

現役のITエンジニア。 気ままにコードを書いたり技術情報を発信しています。 Webアプリ/Windows・Macアプリ/モバイルアプリなど。 (Java, PHP, Javascript, Swift, Python, C#, 他) 個人開発:Clibor, Quipha, TXT-Crypter, 符計算特訓, チグサツール Kindle本: Laravel9 実践入門, 他

クリップボード履歴

Clibor

Windows

Cliborはシンプルで高機能なクリップボード履歴ソフトです。 また普段よく使うワードを定型文として登録し、いつでもクリップボードに保存することができます。高度なテキスト整形・FIFOモード・ホットキーに対応。

クリップボード履歴

Windows版Cliborの利便性を、そのままMacでも。 定型文登録、高度なテキスト整形、FIFOモードなど、便利なクリップボード履歴機能を利用できます。macOS最新のTahoeにも対応。

テキスト暗号化

テキストを暗号化してURLで共有・保存できる無料サービスです。 パスフレーズを知る人だけが復号できます。登録不要、データはサーバーに保存されません。 Notionでも利用できます。

学習

Quipha

Web / iOS

自分だけの問題集や問題を作成し、クイズを行い、学習に活用することができるアプリです。 例えば、学校の授業、語学学習、IT資格やその他の資格など多彩な分野での学習を支援します。 いつでも、どこでも、あなたの学習をサポート。

ツール

日常の「ちょっとした効率化」をサポートするWeb便利ツール集。 テキスト・データ処理から最新のAI連携まで、日々のちょっとした手間でググりがちなユーティリティを1つの場所に集約。

麻雀

麻雀の符計算をひたすら特訓しマスターしましょう。 初心者の方はもちろん、もっと速く計算したい方にも役立ちます。 5万対局以上の実践から問題を収録。

コメント

タイトルとURLをコピーしました