为什么要用转义字符串?

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版



java自动转义特殊字符 java中特殊字符转义_字符串



/**
     * 
    *(特殊字符替换) 
    * @param  TODO
    * @return String    返回类型 
    * @author xsw
    * @2016-12-4下午03:10:03
     */
    public static String htmlReplace(String str){
        //str = str.replace("“", "“");
        //str = str.replace("”", "”");
        //str = str.replace(" ", " ");
        //str = str.replace("&", "&");
        //str = str.replace("'", "'");
        str = str.replace("’", "’");
        str = str.replace("—", "—");
        str = str.replace("–", "–");
        return str;
    }



java自动转义特殊字符 java中特殊字符转义_字符串



 或者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');