HTMLでリンクを設定する時、aタグのhref属性へリンク先を設定しますが、リンク文字列中に「<」、「>」、「”」、「 (半角スペース)」などの記号が入っているとHTMLコードと区別が付かずに表示が崩れてしまいます。こういう時にはURL形式へエンコードしてくれるクラス「URLEncoder」を利用してURLエンコード処理を施します。
Javaソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
/** * <p>[概 要] URLエンコード処理</p> * <p>[詳 細] </p> * <p>[備 考] </p> * @param str 文字列 * @param enc - 文字コード * @return URLエンコード後の文字列 */ public static String urlEncode(String str, String enc){ String urlEncode = ""; StringBuffer result = new StringBuffer(); try { urlEncode = URLEncoder.encode(str, enc); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e.toString()); } // 半角スペースは「%20」へ置換する for(char c : urlEncode.toCharArray()) { switch (c) { case '+' : result.append("%20"); break; default : result.append(c); break; } } return result.toString(); } |
JUnitサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
@Test public void urlEncodeTest_Normal() { // 準備 String str = "&<>\"\' abc123"; String enc = "utf-8"; String expected = "%26%3C%3E%22%27%20abc123"; // 実行 String result = UtilSample1.urlEncode(str, enc); // 検証 assertEquals("URLエンコード結果", expected, result); } @Test(expected = RuntimeException.class) public void urlEncodeTest_Err() { // 準備 String str = "&<>\"\' abc123"; String enc = "Unknown"; // 実行 UtilSample1.urlEncode(str, enc); } |