將HTML中的特殊字元轉化為可顯示的字元

來源:互聯網
上載者:User

很多時候叢網頁中抽取的內容中都含有很多特殊的逸出字元,網頁中顯示的要麼是實體名稱,要麼是實體編碼,如

顯示 說明 實體名稱 實體編號

半方大的空白    

全方大的空白    

不斷行的空白欄框    
< 小於 &lt; &#60;
> 大於 &gt; &#62;
& &符號 &amp; &#38;
" 雙引號 &quot; &#34;
著作權 &copy; &#169;
登入商標 &reg; &#174;
商標(美國) &#8482;
× 乘號 &times; &#215;
÷ 除號 &divide; &#247;

這裡有前人寫好的,將實體編碼轉化為可顯示字元的代碼:Java的HTML的URL字元編碼轉換為Java字串的函數 | 中文Flex例子。原理是根據實體編碼中的數字,得到對應的字元。但上述方法不支援將實體名稱轉化為可顯示字元,如能將"&#34;"轉化為雙引號,卻不能識別"&quot;"。這次沒有固定的規律,只能自己作映射了。比較折中的做法是轉化如下幾個常見的:

&gt; >
&quot; "
&nbsp  
&apos;

修改後的代碼如下:

/** * Convert HTML character enitities(Unicode) to part of a Java String */import java.util.regex.*;public class UnicodeCeToJavaString {static final String mbs = "&#(\\d+);"; // like "ロ"public static String EncodeCesToChars(String paramStr) {paramStr = paramStr.replace("&","&")        .replace("<","<")        .replace(">",">")        .replace(""","\"")        .replace(" "," ")        .replace("'","'");String mbChar;StringBuffer sb = new StringBuffer();Pattern pat = Pattern.compile(mbs);Matcher mat = pat.matcher(paramStr);while (mat.find()) {mbChar = getMbCharStr(mat.group(1)); // pass the digit partmat.appendReplacement(sb, mbChar);}mat.appendTail(sb);return new String(sb);}/* worker method */static String getMbCharStr(String digits) { // handle "12525" part which is// achar[] cha = new char[1]; // Unicode value stringnizedtry {int val = Integer.parseInt(digits);char ch = (char) val;cha[0] = ch;} catch (Exception e) {System.err.println("Error from getMbCharStr:");e.printStackTrace(System.err);}return new String(cha); // easy!, because Java uses Unicode}public static void main(String[] args) {System.out.println(UnicodeCeToJavaString.EncodeCesToChars("George&#39;s War in North America"));}}

比較全的編碼錶參見:常用HTML逸出字元,html轉義符,JavaScript轉義符,html逸出字元表,HTML語言特殊字元對照表(ISO Latin-1字元集) 。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.