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

Java 如何在html内容中编码特殊字符,java,html,Java,Html,在Java中,是否有第三方源代码或快速命令将字符串中的html特殊字符转换为html编码的内容 例如: Original code: <>&abcdef © After encoding: &lt;&gt;&amp;abcdef&copy; 原始代码:&abcdef© 编码后:&;abcdef&复制; 如果要将字符串转换为HTML实体以快速测试某些内容,可以使用如下Web服务: [编辑] 对于Java,您可以使用Apac

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

例如:

Original code:     <>&abcdef ©
After encoding:    &lt;&gt;&amp;abcdef&copy;
原始代码:&abcdef©
编码后:&;abcdef&复制;

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

[编辑] 对于Java,您可以使用Apache Commons Lang中的StringEscapeUtils。请参阅以下线程:

import static org.apache.commons.lang.StringEscapeUtils.escapeHtml;
// ... 
String source=“小于号(Convert

<→

>→

"→ '

"→ "

&→ &


知识来源:

Javascript解决方案: 在这里找到工作小提琴:

===

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

获取html翻译表()

htmlentities()


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

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();
    }
}
首先让我们看看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>
其中打印:

eric@dev ~ $ java Main
'&amp;'
'&lt;'
'&gt;'
' '
'     '
'&amp;&lt;&gt;abc'
'abc&amp;&lt;&gt;'
它不是PHP的
htmlspecialchars(str)
函数的完美克隆,但对我来说已经足够接近了


下面是另一个为模糊字符集进行html实体转换的工具:

这是一个旧工具,但还没有一个可接受的答案。这是我使用纯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配合使用效果很好。

如果您有这样的输入(HTML与未缩放的非HTML混合),您可能已经被套住了。转义HTML特殊字符专门用于避免与真实HTML之间的歧义,这在以后可能无法解决。上面的示例无法完全按原样执行。您的文本不是有效的HTML,您将找不到工具,也无法编写正确处理无效HTML的程序,因为您无法正确定义正确的行为。可能的重复:如果你想在代码中实现它,你必须告诉我们你使用的是哪种编程语言我认为它将取代所有<因为我不想改变div中小于symbol的符号,你可以轻松地在javascript或任何语言中实现它。谢谢!我只是在寻找这种等价物“表“…不幸的是,链接已断开,但主要字符仍在:)@LeonardoAlvesMachado感谢您的报道。修复了链接。
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;
}