【Java】decodeで文字列をURLデコードする!

文字列をURLデコードするにはURLDecorderクラスのdecodeメソッドを使用します。

decodeメソッドは指定した文字列をURLデコードするメソッドとであり、URLデコードすることでURLエンコードされた文字列を元の形式に戻すことができます。

また、decodeメソッドでデフォルトの場合はuft-8でURLデコードされますが、文字コードを指定することで文字コードを設定してURLデコードができます。

今回はURLDcorderクラスのdecodeメソッドを使って以下の場合で文字列をURLデコードしていきます。

⚫︎ 文字列をuft-8でURLデコードする場合
⚫︎ 文字列をuft-16でURLデコードする場合
⚫︎ 文字列をWindows-31JでURLデコードする場合
⚫︎ 文字コードを指定せずに文字列をURLデコードする場合
⚫︎ URLデコードで変換するパターンがない場合

デコードとは

デコードとはエンコードの逆であり、もう少し丁寧に書くとエンコードされたデータを元の形式へ戻すことです。
エンコードの意味は「データを他の形式へ変換すること」ですが、デコードすることでデータを他の形式へ変換されたデータを元の状態に戻すことができます。

また、URLにはアルファベットとなっていますが日本語を入力した場合、対応したアルファベットの組み合わせに置き換えるのをURLエンコードと言いますが、これを「URLに使える文字の組み合わせ」から「URLで使えない文字」に戻すことをURLデコードといいます。

decodeメソッドとは

URLDecorderクラスのdecodeメソッドとは文字列をURLデコードするメソッドとなります。

decodeメソッドの書き方

decodeメソッドの構文は下記となります。

パラメータ

⚫︎ 文字列:
デコードしたい文字列を指定します
⚫︎ 文字コード(任意):
デコードする際の文字コードを指定します(uft-8やuft-16など)

decodeメソッドの第一パラメータに文字列, 第二パラメータに文字符号化方式を指定することで()に指定した文字列をURLデコードします。

第二パラメータを指定せずにdecodeメソッドを呼び出した場合は、uft-8で文字列をURLデコードします。

文字列をURLデコードするサンプルコード

文字列をuft-8でURLデコードする場合

文字列をURLデコードするサンプルコードを紹介します。

出力結果

変換前:abcABC%2B-%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF
UTF-8 :abcABC+-こんにちは

decodeメソッドによって文字列がuft-8でデコードされています。

文字列をuft-16でURLデコードする場合

出力結果

変換前:abcABC%FE%FF%00%2B-%FE%FF%30%53%30%93%30%6B%30%61%30%6F
UTF-16 :abcABC+-こんにちは

decodeメソッドによって文字列がuft-16でデコードされています。

文字列をWindows-31JでURLデコードする場合

出力結果

変換前:abcABC%2B-%82%B1%82%F1%82%C9%82%BF%82%CD
Windows-31J:abcABC+-こんにちは

decodeメソッドによって文字列がWindows-31Jでデコードされています。

文字コードを指定せずに文字列をURLデコードする場合

出力結果

変換前:abcABC%2B-%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF
文字コードを指定なし:abcABC+-こんにちは

文字コードを指定しない場合は文字列はuft-8でデコードされます。

URLデコードで変換するパターンがない場合

出力結果

Exception in thread “main” java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern – Error at index 1 in: “6h”

デコードするパターンがない為、エラーが発生しています。

今回のポイント

decodeで文字列をURLデコード

文字列をURLデコードするにはURLDecoder.decodeメソッドを使用する

⚫︎ デコードとはエンコードされたデータを元の形式へ戻すことである

⚫︎ URLDecoder.decodeメソッドでURLで文字列をURLデコードする

⚫︎ decodeメソッドの第一パラメータは文字列を、第二パラメータは文字コードを指定する

⚫︎ 文字コードを指定しない場合はuft-8で変換される

⚫︎ 文字列にURLデコードで変換するパターンがない場合はエラーが発生する

関連記事

文字列をURLエンコードする方法についてはこちらをご参考ください。

Writer

ST

株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報