Java如何将单引号和双引号编码为HTML实体?

Java如何将单引号和双引号编码为HTML实体?,java,html,Java,Html,如何将“编码为&&34;和”编码为&&39; 我很惊讶HTML Entities 4.0中没有定义单引号和双引号,因此StringEscapeUtils无法将这两个字符转义到各自的实体中 是否有其他与字符串相关的工具能够做到这一点 HTML Entities 4.0中没有定义单引号和双引号的原因是什么 除了单引号和双引号外,有没有任何框架能够将所有unicode字符编码为各自的实体?因为所有unicode都可以手动转换为十进制实体并显示在HTML中,所以想知道是否有任何工具能够自动转换它 HTM

如何将
编码为
&&34;
编码为
&&39;

我很惊讶HTML Entities 4.0中没有定义单引号和双引号,因此
StringEscapeUtils
无法将这两个字符转义到各自的实体中

是否有其他与字符串相关的工具能够做到这一点

HTML Entities 4.0中没有定义单引号和双引号的原因是什么

除了单引号和双引号外,有没有任何框架能够将所有unicode字符编码为各自的实体?因为所有unicode都可以手动转换为十进制实体并显示在HTML中,所以想知道是否有任何工具能够自动转换它

  • HTML 4.0中未定义单引号和双引号
  • HTML4.0中未定义单引号,双引号定义为
    启动HTML2.0

  • StringEscapeUtils无法将这两个字符转义到各自的实体中
  • StringEscapeUtils
    中的
    escapeXml11
    将单引号转换为
    &apos

    例如:

    StringEscapeUtils.escapeXml11("'"); //Returns '
    StringEscapeUtils.escapeHtml4("\""); //Returns "
    
  • 是否有其他与字符串相关的工具能够做到这一点
  • 从Spring框架处理单引号和双引号开始,它还将值转换为十进制(如
    &&39;
    &
    &&34;
    )。 以下示例取自对此问题的回答:

  • HTML Entities 4.0中没有定义单引号和双引号的原因是什么
  • 根据,未定义单个报价。双引号可从HTML2.0获得。而单报价单是支持的一部分

  • 将所有unicode字符编码为相应实体的工具或方法
  • 这里有一个非常好且简单的java实现,作为回答这个问题的一部分

    以下是基于该答案的示例程序:

    import org.apache.commons.lang3.StringEscapeUtils;
    
    public class HTMLCharacterEscaper {
        public static void main(String[] args) {        
            //With StringEscapeUtils
            System.out.println("Using SEU: " + StringEscapeUtils.escapeHtml4("\" ¶"));
            System.out.println("Using SEU: " + StringEscapeUtils.escapeXml11("'"));
    
            //Single quote & double quote
            System.out.println(escapeHTML("It's good"));
            System.out.println(escapeHTML("\" Grit \""));
    
            //Unicode characters
            System.out.println(escapeHTML("This is copyright symbol ©"));
            System.out.println(escapeHTML("Paragraph symbol ¶"));
            System.out.println(escapeHTML("This is pound £"));      
        }
    
        public static String escapeHTML(String s) {
            StringBuilder out = new StringBuilder(Math.max(16, s.length()));
            for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                if (c > 127 || c == '"' || c == '<' || c == '>' || c == '&' || c == '\'') {
                    out.append("&#");
                    out.append((int) c);
                    out.append(';');
                } else {
                    out.append(c);
                }
            }
            return out.toString();
        }
    
    }
    
    import org.apache.commons.lang3.StringEscapeUtils;
    公共类HTMLCharacterEscaper{
    公共静态void main(字符串[]args){
    //带弦逃逸器
    System.out.println(“使用SEU:+StringEscapeUtils.escapeHtml4(\”);
    System.out.println(“使用SEU:+StringEscapeUtils.escapeXml11(“”));
    //单报价和双报价
    System.out.println(escapeHTML(“它很好”);
    System.out.println(escapeHTML(“砂砾”);
    //Unicode字符
    System.out.println(escapeHTML(“这是版权符号”);
    System.out.println(escapeHTML(“段落符号”);
    System.out.println(escapeHTML(“这是英镑”);
    }
    公共静态字符串escapeHTML(字符串s){
    StringBuilder out=新的StringBuilder(Math.max(16,s.length());
    对于(int i=0;i127 | | c=''''''''''''.| | c=''''.'c='.''.'{
    out.追加(&#)号;
    out.append((int)c);
    out.append(“;”);
    }否则{
    附加(c);
    }
    }
    return out.toString();
    }
    }
    
    以下是一些有趣的链接,我在寻找答案的过程中遇到了这些链接:

    import org.apache.commons.lang3.StringEscapeUtils;
    
    public class HTMLCharacterEscaper {
        public static void main(String[] args) {        
            //With StringEscapeUtils
            System.out.println("Using SEU: " + StringEscapeUtils.escapeHtml4("\" ¶"));
            System.out.println("Using SEU: " + StringEscapeUtils.escapeXml11("'"));
    
            //Single quote & double quote
            System.out.println(escapeHTML("It's good"));
            System.out.println(escapeHTML("\" Grit \""));
    
            //Unicode characters
            System.out.println(escapeHTML("This is copyright symbol ©"));
            System.out.println(escapeHTML("Paragraph symbol ¶"));
            System.out.println(escapeHTML("This is pound £"));      
        }
    
        public static String escapeHTML(String s) {
            StringBuilder out = new StringBuilder(Math.max(16, s.length()));
            for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                if (c > 127 || c == '"' || c == '<' || c == '>' || c == '&' || c == '\'') {
                    out.append("&#");
                    out.append((int) c);
                    out.append(';');
                } else {
                    out.append(c);
                }
            }
            return out.toString();
        }
    
    }