hakobera's blog

技術メモ。たまに雑談

Java で URI エンコード (RFC 3986)

自前エンコーディングはやらない方針で書いてみた。
とりあえず以下のコードでできた。
でも、絶対にもっといい方法がある気がする。

  public static String encode(String uriTemplate) {
    StringBuffer buf = new StringBuffer();
		
    for (int i=0; i<uriTemplate.length(); ++i) {
      String c = uriTemplate.substring(i, i+1);
      try {
        buf.append(new URI(null, null, c, null).toASCIIString());
      } catch (URISyntaxException e) {
	return uriTemplate;
      }
    }
    return buf.toString();
  }

実験コードなので、例外処理は適当なので注意。