[Seasar-user:5976] [Teeda]HTML特殊文字のエンコードについて

武井 美代子 [E-MAIL ADDRESS DELETED]
2007年 1月 31日 (水) 20:55:26 JST


お世話になっております。武井です。

続けての投稿失礼いたします。

Teeda-1.0.3を使用しています。

outputTextを使用して、「\」文字を出力したいと思っております。

「&」、「<」、「>」などのHTML特殊文字はエンコードされ、出力されているのですが、
「\」文字については、エンコードされていないため、
HTMLの表示上、バックスラッシュになってしまいます。

#org.seasar.teeda.core.util.HTMLEncodeUtil#encode()を拝見しました


また、Pageクラスのほうで、「\」文字をエンコードし、出力したところ、
「&」文字がTeedaのほうでエンコードされてしまい、
「&yen;」→「&amp;yen;」と出力されてしまいました。(表示上は「&yen;」です。)

他の機能に差し支えなければ、「\」文字もエンコードしていただきたいと思っております。


試しに、「\」文字をエンコードする処理を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("&nbsp;");
        } else if (c == '\\') {    // 追加
            sb.append("&yen;");    // 追加
        } else if (c == '<') {
            sb.append("&lt;");
        } else if (c == '>') {
            sb.append("&gt;");
        } else if (amp && c == '&') {
            sb.append("&amp;");
        } else if (c == '"') {
            sb.append("&quot;");
        } else if (quote && c == '\'') {
            sb.append("&#39;");
        } else {
            sb.append(c);
        }
    }
    return new String(sb);
}


以上、ご検討のほど、よろしくお願いします。

武井 美代子 
[E-MAIL ADDRESS DELETED]





Seasar-user メーリングリストの案内