[AD] Scalaアプリケーションの開発・保守は合同会社ミルクソフトにお任せください
この記事では、文字列をURLへエンコードしたり、URLから文字列へデコードしたりする方法を解説します。
文字列をURLへエンコードするには「URLEncoder
」
java.net.URLEncoder
を使うと、文字列をURLへエンコードすることができます。
val title = "Scala逆引き解説|Scalapedia" val charset = StandardCharsets.UTF_8.name val result = URLEncoder.encode(title, charset) println(result)
変換するにあたり、第2引数に文字コードを指定する必要があります。
ここではUTF-8を指定します。
文字コードはjava.nio.charset.StandardCharsets
にまとめられているものを参照して使用します。
Java 11 API Docs:
java.nio.charset.StandardCharsets
決して文字列で直接"UTF-8"
のように指定したりしないようにしましょう。
いささか面倒ではあるものの、横着すると不具合の温床となります。
実行すると以下のような結果が出力されます。
Scala%E9%80%86%E5%BC%95%E3%81%8D%E8%A7%A3%E8%AA%AC%EF%BD%9CScalapedia
文字列がURLエンコードされていることがわかります。
Java 11 API Docs:
java.net.URLEncoder#encode(java.lang.String, java.lang.String)
URLを文字列へデコードするには「URLDecoder
」
逆に、java.net.URLDecoder
を使うと、URLの文字列をデコードすることができます。
こちらも変換するにあたり、第2引数に文字コードを指定する必要があります。
UTF-8を指定して実行します。
val str = "Scala%E9%80%86%E5%BC%95%E3%81%8D%E8%A7%A3%E8%AA%AC%EF%BD%9CScalapedia" val charset = StandardCharsets.UTF_8.name val result = URLDecoder.decode(str, charset) println(result)
結果は以下のようになります。
Scala逆引き解説|Scalapedia
Java 11 API Docs:
java.net.URLDecoder#decode(java.lang.String, java.lang.String)
第2引数の文字コードは必ず渡しましょう
第2引数の文字コードを省略したメソッドが存在しています。
一見便利なのですが、既に非推奨となっています。
環境によって文字コードが異なりうるので、予期せぬ不具合が生じる可能性があるためです。
たとえさまざまな環境で実行する予定がなくとも、念のため使用は避けておきましょう。
サイト内検索
カテゴリ「文字列処理」の記事
文字列をエスケープしたり復元したりする方法(Apache Commons Text)
JavaとScalaのString/StringBuilder/StringBuffer使い分け事情
文字列を分割する方法(split・splitAt・linesIterator・linesWithSeparatorsメソッド)
trimメソッドで文字列の前後の空白を除去する
文字列が一致するか比較する方法/大文字・小文字を区別せずに比較する方法
特定の文字の文字コード(コード・ポイント)を取得する
replaceメソッドなど、文字列を置換する方法を紹介
文字列の先頭や末尾を、取得したり切り落としたりする方法
containsメソッドでStringに特定の文字列が含まれるか調べる方法
数値を文字列に変換する方法
stripメソッドで文字列の前後の全角空白を除去する
文字列を数値に変換するには?to○○メソッドと注意点について
文字列を辞書的に比較する方法/大文字・小文字を区別せずに比較する方法
文字列が特定の文字列で始まるか・終わるかを調べる方法
【getBytes&size】文字列のバイト長を取得する方法
substringでStringを切り取り、部分文字列を抽出する方法
StringOpsとWrappedStringの違いは?
文字列を連結するには?+演算子やString interpolationの使い方
文字列の大文字へ・小文字へ変換する方法
文字列を逆順にする方法
文字列の文字コード(文字セット)を変換する方法
文字列の長さを取得する方法:lengthとcodePointCountの使い分け
文字列をURLエンコード・デコードする方法
文字列が正規表現に合致するか調べる方法
この文字の位置はどこ?文字列のインデックスを取得する方法
文字列をバイト列に、またはバイト列を文字列に変換する方法
カテゴリ「文字列処理」の記事
文字列をエスケープしたり復元したりする方法(Apache Commons Text)
JavaとScalaのString/StringBuilder/StringBuffer使い分け事情
文字列を分割する方法(split・splitAt・linesIterator・linesWithSeparatorsメソッド)
trimメソッドで文字列の前後の空白を除去する
文字列が一致するか比較する方法/大文字・小文字を区別せずに比較する方法
特定の文字の文字コード(コード・ポイント)を取得する
replaceメソッドなど、文字列を置換する方法を紹介
文字列の先頭や末尾を、取得したり切り落としたりする方法
containsメソッドでStringに特定の文字列が含まれるか調べる方法
数値を文字列に変換する方法
stripメソッドで文字列の前後の全角空白を除去する
文字列を数値に変換するには?to○○メソッドと注意点について
文字列を辞書的に比較する方法/大文字・小文字を区別せずに比較する方法
文字列が特定の文字列で始まるか・終わるかを調べる方法
【getBytes&size】文字列のバイト長を取得する方法
substringでStringを切り取り、部分文字列を抽出する方法
StringOpsとWrappedStringの違いは?
文字列を連結するには?+演算子やString interpolationの使い方
文字列の大文字へ・小文字へ変換する方法
文字列を逆順にする方法
文字列の文字コード(文字セット)を変換する方法
文字列の長さを取得する方法:lengthとcodePointCountの使い分け
文字列をURLエンコード・デコードする方法
文字列が正規表現に合致するか調べる方法
この文字の位置はどこ?文字列のインデックスを取得する方法
文字列をバイト列に、またはバイト列を文字列に変換する方法