java替换html特殊字符,HTML特殊字符替换问题 html escape相关
在處理網頁時經常會遇到這樣的問題,后臺得到的字符串數據包含網頁HTML中的特殊字符,例如在頁面上這樣一句話,“你好·世界”在后臺取到的是“你好·世界”。這是由于HTML對特殊字符進行了編碼。
今天在取得前臺form表單提交的數據時,就遇到了這樣的問題。頁面表單填的數據是正常的字符串“你好·世界”,傳到后臺以后卻把·這個字符進行了編碼,變成了·。
之前在做爬蟲時處理這種問題通常是進行簡單的替換,類似這樣
String?escaped?=?source.replace("
但是考慮到用戶進行表單提交可能有很多種情況的特殊字符,一一列舉各種特殊字符的情況再進行replace非常繁瑣。而這種字符串問題也很常見,應該有成熟的工具包可以對其進行處理。
google之后,果然沒讓我失望,這個工具就在apache的commons.lang包之中,是StringEscapeUtils工具類。
處理上述問題,只需要在后臺java代碼中進行如下處理即可。String?escaped?=?StringEscapeUtilssource.unescapeHtml(source);
escaped中的值就是正常的字符串“你好·世界”。
StringEscapeUtils中還提供了許多其他的方法,比如escapeCsv/unescapeCsv,escapeJava/unescapeJava,escapeJavaScript/unescapeJavaScript等等,類似escapeHtml/unescapeHtml,方便對字符串其他情況的處理。escapeHtml指的是將字符串進行編碼,unescapeHtml表示不編碼也就是顯示原始字符串。
真的要感謝造輪子的前人,使我們更方便地解決問題。我們也應該更充分得用好輪子,提高效率。有機會也去造輪子。也希望有一天隨著技術不斷發展,輪子已經完善到不需要用我們這種用輪子的人^_^
好吧,不瞎扯了,再說句相關的題外話,spring中也提供htmlEscape功能,可以用?和標簽;也可以在spring form的input標簽中添加屬性htmlEscape="false",完整方式如下
更詳細的請查閱spring相關文檔。
參考鏈接:
總結
以上是生活随笔為你收集整理的java替换html特殊字符,HTML特殊字符替换问题 html escape相关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java存储字节,java 数目字转化成
- 下一篇: java 实现set,Java--Set