在Java中,是否有可用的第三方源或快速命令将字符串中的html特殊字符转换为HTML编码内容?
例如:
Original code: <>&abcdef ©
After encoding: <>&abcdef©
答案 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&def
php> echo htmlspecialchars("abc<>\"&def");
abc<>"&def
php> echo htmlspecialchars("abc<>\"&d'ef");
abc<>"&d'ef
php> echo htmlspecialchars("abc< >\"&d'ef");
abc< >"&d'ef
php> echo htmlspecialchars("abc def");
abc def
php>
备注:强>
©
和欧元符号€
等额外版权保持原样。代码:
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("<"); break;
case '>': sb.append(">"); break;
case '&': sb.append("&"); break;
case '"': sb.append("""); break;
default: sb.append(c); break;
}
}
return sb.toString();
}
}
打印哪些:
eric@dev ~ $ java Main
'&'
'<'
'>'
' '
' '
'&<>abc'
'abc&<>'
它并不是PHP htmlspecialchars(str)
功能的完美克隆,但它对我来说足够接近。
这是另一个为混淆字符集执行html实体转换的内容:http://www.rgagnon.com/javadetails/java-0306.html