ITエンジニアSAIの技術関連備忘録

技術的な内容を忘れないようにメモ....

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

Java標準のURLEncoderだと、「+」「*」がエンコードされない、且つ「~」が「%7E」にエンコードされてしまうため、
RFC3986に準拠したエンコードを行いたいときのメモ
 
RFC3986仕様書
/**
 * 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;
     }
}