如何在html内容中编码特殊字符

时间:2011-04-21 08:10:10

标签: java html

在Java中,是否有可用的第三方源或快速命令将字符串中的html特殊字符转换为HTML编码内容?

例如:

Original code:     <>&abcdef ©
After encoding:    &lt;&gt;&amp;abcdef&copy;

5 个答案:

答案 0 :(得分:6)

如果要将字符串转换为HTML实体以快速测试某些内容,可以使用以下Web服务:

http://www.primitivetype.com/resources/htmlentities.php

<强> [编辑] 对于Java,您可以使用Apache Commons Lang中的StringEscapeUtils。看到这个帖子: Recommended method for escaping HTML in Java

import static org.apache.commons.lang.StringEscapeUtils.escapeHtml; 
// ... 
String source = "The less than sign (<) and ampersand (&) must be escaped before using them in HTML";
String escaped = escapeHtml(source);

我借用了上面提到的那个例子。

答案 1 :(得分:3)

这是旧的,但它没有和接受的答案,这是我的版本纯白色java:

public String toHTML(String str) {
    String out = "";
    for (char c: str.toCharArray()) {
        if(!Character.isLetterOrDigit(c))
            out += String.format("&#x%x;", (int)c);
        else
            out += String.format("%s", c);

    }
    return out;
}

很棒的html5和utf-8。 (抱歉我的英语不好)。

答案 2 :(得分:2)

转换

&LT; →&amp; lt;

&GT; →&amp; gt;

'→&amp;#39;

“→&amp; quot;

&安培; →&amp; amp;

知识来源:http://hu.php.net/manual/en/function.htmlspecialchars.php

答案 3 :(得分:2)

Javascript解决方案: 找到工作小提琴: http://jsfiddle.net/ezmilhouse/Zb5C9/1/

===

示例使用从php.js借来的2个函数:

<强> get_html_translation_table()

https://github.com/kvz/phpjs/raw/master/functions/strings/get_html_translation_table.js

<强>ヶ辆()

https://github.com/kvz/phpjs/raw/master/functions/strings/htmlentities.js

答案 4 :(得分:0)

这里有一些Java代码尽可能地复制PHP的默认htmlspecialchars(str):

首先让我们看一下PHP htmlspecialchars(str)的工作原理:

php> echo htmlspecialchars("abc\ndef");
abc
def
php> echo htmlspecialchars("abc&def");
abc&amp;def
php> echo htmlspecialchars("abc<>\"&def");
abc&lt;&gt;&quot;&amp;def
php> echo htmlspecialchars("abc<>\"&d'ef");
abc&lt;&gt;&quot;&amp;d'ef
php> echo htmlspecialchars("abc<   >\"&d'ef");
abc&lt;   &gt;&quot;&amp;d'ef
php> echo htmlspecialchars("abc def");
abc def
php>

备注:

  1. 空格和换行符保持原样。
  2. 每个实例替换一次定义的实体。
  3. 版权©和欧元符号等额外版权保持原样。
  4. 代码:

    public class Main{
        public static void main(String[] args) {
            System.out.println("'" + stringToHtmlString("&") + "'");
            System.out.println("'" + stringToHtmlString("<") + "'");
            System.out.println("'" + stringToHtmlString(">") + "'");
            System.out.println("'" + stringToHtmlString(" ") + "'");
            System.out.println("'" + stringToHtmlString("     ") + "'");
            System.out.println("'" + stringToHtmlString("&<>abc") + "'");
            System.out.println("'" + stringToHtmlString("abc&<>") + "'");
        }
        public static final String stringToHtmlString(String s){
           StringBuffer sb = new StringBuffer();
           int n = s.length();
           for (int i = 0; i < n; i++) {
              char c = s.charAt(i);
              switch (c) {
                 case '<': sb.append("&lt;"); break;
                 case '>': sb.append("&gt;"); break;
                 case '&': sb.append("&amp;"); break;
                 case '"': sb.append("&quot;"); break;
                 default:  sb.append(c); break;
              }
           }
           return sb.toString();
        }
    }
    

    打印哪些:

    eric@dev ~ $ java Main
    '&amp;'
    '&lt;'
    '&gt;'
    ' '
    '     '
    '&amp;&lt;&gt;abc'
    'abc&amp;&lt;&gt;'
    

    它并不是PHP htmlspecialchars(str)功能的完美克隆,但它对我来说足够接近。

    这是另一个为混淆字符集执行html实体转换的内容:http://www.rgagnon.com/javadetails/java-0306.html