StringEscapeUtils.escapeHtml、unescapeHtml:處理html中的編碼問題
先前在幾篇文章中提到了網址編碼和文字轉碼的問題,
如 Javascript 就有以下 1, 2兩篇, Java 部份則是第3篇:
即從網頁原始碼得到的資料會有類似下面這種編碼。
然而如果不是熟悉 html 的人會以為是亂碼,
而且就算我們知道是 html 的 code,
平常不使用的話也不容易知道到底哪個碼對應哪個字。
因此今天就是要介紹在 Java 中能將 html 編碼正確轉換的套件,
org.apache.commons.lang.StringEscapeUtils。
另外若想知道在 java中如何處理 xss 的攻擊可見:
HTML Purifier in Java:HTMLInputFilter
在StringEscapeUtils有許多好用的功能,之後有用到的話會再來介紹,
今天主要先介紹:escapeHtml 和 unescapeHtml,
更多的功能可見 StringEscapeUtils 的 API。
要使用 StringEscapeUtils 要先到這個網址去下載相關的 jar 檔並匯入,
http://commons.apache.org/downloads/download_lang.cgi。
接著便可以依下面的程式碼測試是否可以正確 escape 和 unescape html了。
程式中共有兩個測試,一個測試純文字的轉換,另一個則是針對上面所提的奇怪符號作測試:
而且 StringEscapeUtils 也還有針對其他格式的轉換,如 xml、javascript、java、csv。
詳細的說明可見:StringEscapeUtils 的 API 。
或是等我之後有用到再來寫說明囉。
關鍵字:StringEscapeUtils, Apache, html, escape, unescape
參考資料:
如 Javascript 就有以下 1, 2兩篇, Java 部份則是第3篇:
- 用Javascript替中文轉碼:escape, encodeURI, encodeURIComponent 的比較
- Online UrlEncoder:線上轉換中文網址為UTF-8編碼
- 用Java替中文轉碼:URLEncoder
即從網頁原始碼得到的資料會有類似下面這種編碼。
&<>"這在我們一看就知道是為了在 html 正確顯示的code,
然而如果不是熟悉 html 的人會以為是亂碼,
而且就算我們知道是 html 的 code,
平常不使用的話也不容易知道到底哪個碼對應哪個字。
因此今天就是要介紹在 Java 中能將 html 編碼正確轉換的套件,
org.apache.commons.lang.StringEscapeUtils。
另外若想知道在 java中如何處理 xss 的攻擊可見:
HTML Purifier in Java:HTMLInputFilter
在StringEscapeUtils有許多好用的功能,之後有用到的話會再來介紹,
今天主要先介紹:escapeHtml 和 unescapeHtml,
更多的功能可見 StringEscapeUtils 的 API。
要使用 StringEscapeUtils 要先到這個網址去下載相關的 jar 檔並匯入,
http://commons.apache.org/downloads/download_lang.cgi。
接著便可以依下面的程式碼測試是否可以正確 escape 和 unescape html了。
程式中共有兩個測試,一個測試純文字的轉換,另一個則是針對上面所提的奇怪符號作測試:
其輸出結果為:
- package demo.stringEscapeUtils;
- import org.apache.commons.lang.StringEscapeUtils;
- public class StringEscapeUtilsDemo {
- public static void main(String[] args) {
- // 測試純文字的 escape 和 unescape
- String normalWords = "測試文字";
- System.out.println("測試純文字的 escape 和 unescape");
- String escapedWords = StringEscapeUtils.escapeHtml(normalWords);
- System.out.println("escape " + normalWords +" 的結果是: " + escapedWords);
- String unescapedWords = StringEscapeUtils.unescapeHtml(escapedWords);
- System.out.println("unescape 回來的結果是: " + unescapedWords);
- System.out.println();
- // 測試 html 特殊符號的 escape 和 unescape
- // 輸入的符號為:& < > "
- String htmlCodes = "&<>\"";
- System.out.println("測試 html 特殊符號的 escape 和 unescape");
- String escapedhtmlCodes = StringEscapeUtils.escapeHtml(htmlCodes);
- System.out.println("escape " + htmlCodes +" 的結果是: " + escapedhtmlCodes);
- String unescapedhtmlCodes = StringEscapeUtils.unescapeHtml(escapedhtmlCodes);
- System.out.println("unescape 回來的結果是: " + unescapedhtmlCodes);
- }
- }
由以上知我們可以用 StringEscapeUtils 輕易轉換 html 的碼,
- 測試純文字的 escape 和 unescape
- escape 測試文字 的結果是: 測試文字
- unescape 回來的結果是: 測試文字
- 測試 html 特殊符號的 escape 和 unescape
- escape &<>" 的結果是: &<>"
- unescape 回來的結果是: &<>"
而且 StringEscapeUtils 也還有針對其他格式的轉換,如 xml、javascript、java、csv。
詳細的說明可見:StringEscapeUtils 的 API 。
或是等我之後有用到再來寫說明囉。
關鍵字:StringEscapeUtils, Apache, html, escape, unescape
參考資料:
留言
張貼留言