在Java中,是否有第三方源可用或快速命令將字符串中的html特殊字符轉換爲html編碼的內容?如何在html內容中編碼特殊字符
例如:
Original code: <>&abcdef ©
After encoding: <>&abcdef©
在Java中,是否有第三方源可用或快速命令將字符串中的html特殊字符轉換爲html編碼的內容?如何在html內容中編碼特殊字符
例如:
Original code: <>&abcdef ©
After encoding: <>&abcdef©
如果你想爲一個字符串爲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);
我借用了上面提到的線程的例子。
轉換
< → & LT;
> → & gt;
' → &#39;
" → &「
& → & amp;
知識的來源:http://hu.php.net/manual/en/function.htmlspecialchars.php
您可以在JavaScript中實現它或任何語言很容易。 – Notinlist 2011-04-21 08:27:24
謝謝! 我只是在尋找這個等價的「表」...不幸的是,鏈接被打破,但主要的字符在那裏:) – 2017-06-26 13:39:24
JavaScript解決方案: 在這裏找到工作小提琴: http://jsfiddle.net/ezmilhouse/Zb5C9/1/
===
樣品使用從PHP借來的2種功能。JS:
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
下面是一些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();
}
}
它打印:
[email protected] ~ $ java Main
'&'
'<'
'>'
' '
' '
'&<>abc'
'abc&<>'
這不是PHP的htmlspecialchars(str)
功能的完美克隆,但它是足夠接近我。
這裏還有一個它確實HTML實體轉換爲混淆的字符集:http://www.rgagnon.com/javadetails/java-0306.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造成混淆,而以後可能無法解析。 – deceze 2011-04-21 08:19:43
上述示例不能完全按照原樣進行。您的文本不是有效的HTML,您將無法找到工具,也無法正確編寫適用於無效HTML的程序,因爲您無法正確定義正確的行爲。 – Notinlist 2011-04-21 08:29:29
我正在使用java ... – Roshan 2011-04-21 08:43:34