java轉換 HTML字符實體,java特殊字符轉義字符串


為什么要用轉義字符串?

HTML中<,>,&等有特殊含義(<,>,用於鏈接簽,&用於轉義),不能直接使用。這些符號是不顯示在我們最終看到的網頁里的,那如果我們希望在網頁中顯示這些符號,該怎么辦呢?

這就要說到HTML轉義字符串(Escape Sequence)了。

轉義字符串(Escape Sequence)也稱字符實體(Character Entity)。在HTML中,定義轉義字符串的原因有兩個:第一個原因是像“<”和“>”這類符號已經用來表示HTML標簽,因此就不能直接當作文本中的符號來使用。為了在HTML文檔中使用這些符號,就需要定義它的轉義字符串。當解釋程序遇到這類字符串時就把它解釋為真實的字符。在輸入轉義字符串時,要嚴格遵守字母大小寫的規則。第二個原因是,有些字符在ASCII字符集中沒有定義,因此需要使用轉義字符串來表示。

轉義字符串的組成

轉義字符串(Escape Sequence),即字符實體(Character Entity)分成三部分:第一部分是一個&符號,英文叫ampersand;第二部分是實體(Entity)名字或者是#加上實體(Entity)編號;第三部分是一個分號。

比如,要顯示小於號(<),就可以寫 &lt; 或者 < 。

用實體(Entity)名字的好處是比較好理解,一看lt,大概就猜出是less than的意思,但是其劣勢在於並不是所有的瀏覽器都支持最新的Entity名字。而實體(Entity)編號,各種瀏覽器都能處理。

提示:實體名稱(Entity)是區分大小寫的。

備注:同一個符號,可以用“實體名稱”和“實體編號”兩種方式引用,“實體名稱”的優勢在於便於記憶,但不能保證所有的瀏覽器都能順利識別它,而“實體編號”則沒有這種擔憂,但它實在不方便記憶。

如何顯示空格?

通常情況下,HTML會自動截去多余的空格。不管你加多少空格,都被看做一個空格。比如你在兩個字之間加了10個空格,HTML會截去9個空格,只保留一個。為了在網頁中增加空格,你可以使用&nbsp;表示空格。


HTML特殊轉義字符列表

最常用的字符實體
Character Entities

顯示 說明 實體名稱 實體編號
  半方大的空白 &ensp;  
  全方大的空白 &emsp;  
  不斷行的空白格 &nbsp;  
< 小於 &lt; <
> 大於 &gt; >
& &符號 &amp; &
" 雙引號 &quot; "
© 版權 &copy; ©
® 已注冊商標 &reg; ®
商標(美國)
× 乘號 &times; ×
÷ 除號 &divide; ÷

ISO 8859-1 (Latin-1)字符集

HTML 4.01 支持 ISO 8859-1 (Latin-1) 字符集。

備注:為了方便起見,以下表格中,“實體名稱”簡稱為“名稱”,“實體編號”簡稱為“編號”

顯示 名稱 編號 顯示 名稱 編號 顯示 名稱 編號 顯示 名稱 編號 顯示 名稱 編號
  &nbsp;   ¡ &iexcl; ¡ ¢ &cent; ¢ £ &pound; £ ¤ &curren; ¤
¥ &yen; ¥ ¦ &brvbar; ¦ § &sect; § ¨ &uml; ¨ © &copy; ©
ª &ordf; ª « &laquo; « ¬ &not; ¬   &shy;   ® &reg; ®
¯ &macr; ¯ ° &deg; ° ± &plusmn; ± ² &sup2; ² ³ &sup3; ³
´ &acute; ´ µ &micro; µ &para; · &middot; · ¸ &cedil; ¸
¹ &sup1; ¹ º &ordm; º » &raquo; » ¼ &frac14; ¼ ½ &frac12; ½
¾ &frac34; ¾ ¿ &iquest; ¿ À &Agrave; À Á &Aacute; Á Â &Acirc; Â
à &Atilde; Ã Ä &Auml; Ä Å &Aring; Å Æ &AElig; Æ Ç &Ccedil; Ç
È &Egrave; È É &Eacute; É Ê &Ecirc; Ê Ë &Euml; Ë Ì &Igrave; Ì
Í &Iacute; Í Î &Icirc; Î Ï &Iuml; Ï Ð &ETH; Ð Ñ &Ntilde; Ñ
Ò &Ograve; Ò Ó &Oacute; Ó Ô &Ocirc; Ô Õ &Otilde; Õ Ö &Ouml; Ö
× &times; × Ø &Oslash; Ø Ù &Ugrave; Ù Ú &Uacute; Ú Û &Ucirc; Û
Ü &Uuml; Ü Ý &Yacute; Ý Þ &THORN; Þ ß &szlig; ß à &agrave; à
á &aacute; á â &acirc; â ã &atilde; ã ä &auml; ä å &aring; å
æ &aelig; æ ç &ccedil; ç è &egrave; è é &eacute; é ê &ecirc; ê
ë &euml; ë ì &igrave; ì í &iacute; í î &icirc; î ï &iuml; ï
ð &eth; ð ñ &ntilde; ñ ò &ograve; ò ó &oacute; ó ô &ocirc; ô
õ &otilde; õ ö &ouml; ö ÷ &divide; ÷ ø &oslash; ø ù &ugrave; ù
ú &uacute; ú û &ucirc; û ü &uuml; ü ý &yacute; ý þ &thorn; þ
ÿ &yuml; ÿ

數學和希臘字母標志
symbols, mathematical symbols, and Greek letters

顯示 名稱 編號 顯示 名稱 編號 顯示 名稱 編號 顯示 名稱 編號 顯示 名稱 編號
ƒ &fnof; ƒ Α &Alpha; Α Β &Beta; Β Γ &Gamma; Γ Δ &Delta; Δ
Ε &Epsilon; Ε Ζ &Zeta; Ζ Η &Eta; Η Θ &Theta; Θ Ι &Iota; Ι
Κ &Kappa; Κ Λ &Lambda; Λ Μ &Mu; Μ Ν &Nu; Ν Ξ &Xi; Ξ
Ο &Omicron; Ο Π &Pi; Π Ρ &Rho; Ρ Σ &Sigma; Σ Τ &Tau; Τ
Υ &Upsilon; Υ Φ &Phi; Φ Χ &Chi; Χ Ψ &Psi; Ψ Ω &Omega; Ω
α &alpha; α β &beta; β γ &gamma; γ δ &delta; δ ε &epsilon; ε
ζ &zeta; ζ η &eta; η θ &theta; θ ι &iota; ι κ &kappa; κ
λ &lambda; λ μ &mu; μ ν &nu; ν ξ &xi; ξ ο &omicron; ο
π &pi; π ρ &rho; ρ ς &sigmaf; ς σ &sigma; σ τ &tau; τ
υ &upsilon; υ φ &phi; φ χ &chi; χ ψ &psi; ψ ω &omega; ω
? &thetasym; ϑ ? &upsih; ϒ ? &piv; ϖ &bull; &hellip;
&prime; &Prime; &oline; &frasl; &weierp;
&image; &real; &trade; &alefsym; &larr;
&uarr; &rarr; &darr; &harr; &crarr;
&lArr; &uArr; &rArr; &dArr; &hArr;
&forall; &part; &exist; &empty; &nabla;
&isin; &notin; &ni; &prod; &sum;
&minus; &lowast; &radic; &prop; &infin;
&ang; &and; &or; &cap; &cup;
&int; &there4; &sim; &cong; &asymp;
&ne; &equiv; &le; &ge; &sub;
&sup; &nsub; &sube; &supe; &oplus;
&otimes; &perp; &sdot; ? &lceil; ? &rceil;
? &lfloor; ? &rfloor; ? &lang; ? &rang; &loz;
&spades; &clubs; &hearts; &diams;

重要的國際標記
markup-significant and internationalization characters

顯示 名稱 編號 顯示 名稱 編號 顯示 名稱 編號 顯示 名稱 編號 顯示 名稱 編號
" &quot; " & &amp; & < &lt; < > &gt; > Œ &OElig; Œ
œ &oelig; œ Š &Scaron; Š š &scaron; š Ÿ &Yuml; Ÿ ˆ &circ; ˆ
˜ &tilde; ˜   &ensp;     &emsp;     &thinsp;   &zwnj;
&zwj; &lrm; &rlm; &ndash; &mdash;
&lsquo; &rsquo; &sbquo; &ldquo; &rdquo;
&bdquo; &dagger; &Dagger; &permil; &lsaquo;
&rsaquo; &euro;

JavaScript轉義符

轉義序列 字符
\b 退格
\f 走紙換頁
\n 換行
\r 回車
\t 橫向跳格 (Ctrl-I)
\' 單引號
\" 雙引號
\\ 反斜杠

編程的時候要注意特殊字符的問題,很多運行時出現的問題都是因為特殊字符的出現而引起的。

注意,由於反斜杠本身用作轉義符,因此不能直接在腳本中鍵入一個反斜杠。如果要產生一個反斜杠,必須一起鍵入兩個反斜杠 (\\)。


 

編碼轉換(to Unicode)

(程序代碼來源於網絡)

Js版

<script>
                 test = "你好abc"
                 str = ""
                 for( i=0;    i<test.length; i++ )
                 {
                  temp = test.charCodeAt(i).toString(16);
                  str    += "\\u"+ new Array(5-String(temp).length).join("0") +temp;
                 }
                 document.write (str)
            </script>

vbs版

Function Unicode(str1)
                 Dim str,temp
                 str = ""
                 For i=1    to len(str1)
                  temp = Hex(AscW(Mid(str1,i,1)))
                  If len(temp) < 5 Then    temp = right("0000" & temp, 4)
                  str = str & "\u" & temp
                 Next
                 Unicode = str
            End Function


 

Function htmlentities(str)
                 For i = 1 to Len(str)
                     char = mid(str, i, 1)
                     If Ascw(char) > 128 then
                         htmlentities = htmlentities & "&#" & Ascw(char) & ";"
                     Else
                         htmlentities = htmlentities & char
                     End if
                 Next
            End Function

coldfusion

function nochaoscode(str)
            {
                 var new_str = “”;
                 for(i=1; i lte len(str);i=i+1){
                     if(asc(mid(str,i,1)) lt 128){
                         new_str = new_str & mid(str,i,1);
                     }else{
                         new_str = new_str & “&##” & asc(mid(str,i,1));
                     }
                 }
                 return new_str;
            }

java版
/**
     * 
    *(特殊字符替換) 
    * @param  TODO
    * @return String    返回類型 
    * @author xsw
    * @2016-12-4下午03:10:03
     */
    public static String htmlReplace(String str){
        //str = str.replace("&ldquo;", "“");
        //str = str.replace("&rdquo;", "”");
        //str = str.replace("&nbsp;", " ");
        //str = str.replace("&", "&amp;");
        //str = str.replace("&#39;", "'");
        str = str.replace("&rsquo;", "’");
        str = str.replace("&mdash;", "—");
        str = str.replace("&ndash;", "–");
        return str;
    }

 

或者java的org.apache.commons.lang3包有個StringEscapeUtils

StringEscapeUtils.unescapeHtml4(str)

 

 
         

附:

在php中我們可以用mbstring的mb_convert_encoding函數實現這個正向及反向的轉化。 如:

 

mb_convert_encoding ("你好", "HTML-ENTITIES", "gb2312"); //輸出:你好

mb_convert_encoding ("你好", "gb2312", "HTML-ENTITIES"); //輸出:你好

如果需要對整個頁面轉化,則只需要在php文件的頭部加上這三行代碼:

mb_internal_encoding("gb2312"); // 這里的gb2312是你網站原來的編碼

mb_http_output("HTML-ENTITIES");

ob_start('mb_output_handler');


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM