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');
--------------------- 
作者:熊哥club 
来源:CSDN 
原文:https://blog.csdn.net/xiongshengwu/article/details/53696647 

猜你喜欢

转载自blog.csdn.net/yyongsheng/article/details/88917509