さっしーブログ

埼玉県在住のシステムエンジニアです。基本的には技術的な内容を中心に発信していきます。

RFC3986に準拠したURLエンコードを行う方法

RFC3986に準拠したエンコードを行いたいときのやりかたをメモ
 
ちなみに下記がRFC3986仕様書

https://www.ietf.org/rfc/rfc3986.txt

 

2.サンプルコード

/**
 * URLエンコードUtil
 *
 * @author saiki-y
 *
 */
public class UrlCodecUtil {
 
     /**
     * RFC3986に準拠したURLエンコードを行う
     *
     * @param value
     * @return
     * @throws UnsupportedEncodingException
     */
     public static String encode(String value) throws UnsupportedEncodingException {
          return convJavaUrlEncodeToRFC3986(URLEncoder.encode(value, "UTF-8"));     
     }
 
     /**
     * RFC3986準拠文字列へ変換を行う
     *
     * @param target 変換対象文字列
     * @return RFC3986準拠文字列
     */
     private static String convJavaUrlEncodeToRFC3986(String target) {
 
          target = target.replace("+", "%20");
          target = target.replace("*", "%2A");
          target = target.replace("%7E", "~");
 
          return target;
     }
}
 

3.最後に 

上記のサンプルコードを見ていただくとわかるようにJava標準のURLEncoderでエンコードできない文字列を置換してあげればよいだけですね。
 
 
以上