[TEEDA-246] HTML特殊文字のエスケープに\を追加して欲しい Created: 2007-02-01  Updated: 2007-02-01  Resolved: 2007-02-01

Status: Resolved
Project: Teeda
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: shot Assignee: shot
Resolution: Fixed Votes: 0
Labels: None


 Description   

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

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

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

また、Pageクラスのほうで、「\」文字をエンコードし、出力したところ、
「&」文字がTeedaのほうでエンコードされてしまい、
「¥」→「&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);
}

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



 Comments   
Comment by shot [ 2007-02-01 ]

修正しました。

Generated at Mon Dec 15 12:51:22 JST 2025 using Jira 10.6.1#10060001-sha1:a6461e220f274b29ced7ac9295492f2465fe5ef5.