-
Type:
Improvement
-
Resolution: Fixed
-
Priority:
Major
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
outputTextを使用して、「\」文字を出力したいと思っております。
「&」、「<」、「>」などのHTML特殊文字はエンコードされ、出力されているのですが、
「\」文字については、エンコードされていないため、
HTMLの表示上、バックスラッシュになってしまいます。
#org.seasar.teeda.core.util.HTMLEncodeUtil#encode()を拝見しました
また、Pageクラスのほうで、「\」文字をエンコードし、出力したところ、
「&」文字がTeedaのほうでエンコードされてしまい、
「¥」→「¥」と出力されてしまいました。(表示上は「¥」です。)
他の機能に差し支えなければ、「\」文字もエンコードしていただきたいと思っております。
試しに、「\」文字をエンコードする処理をorg.seasar.teeda.core.util.HTMLEncodeUtil#encode()に
追加したら、うまくいきました。
public static String encode(final String s, final boolean quote, final boolean amp) { char[] chars = s.toCharArray(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < chars.length; i++) { char c = chars[i]; if ((int) c == '\u00A0') { sb.append(" "); } else if (c == '\\') { // 追加 sb.append("¥"); // 追加 } else if (c == '<') { sb.append("<"); } else if (c == '>') { sb.append(">"); } else if (amp && c == '&') { sb.append("&"); } else if (c == '"') { sb.append("""); } else if (quote && c == '\'') { sb.append("'"); } else { sb.append(c); } } return new String(sb); }
([Seasar-user:5976] [Teeda]HTML特殊文字のエンコードについて)