为什么要用转义字符串?

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("'", "'");
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');

java转换 HTML字符实体,java特殊字符转义字符串的更多相关文章

  1. java转换编码报错java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern

    Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Illegal hex cha ...

  2. java截取某个字符之前或者之后的字符串

    String str = lly://enterVideoList?result={jsonString}; 截取?之前字符串 String str1=str.substring(0, str.ind ...

  3. HTML字符实体(Character Entities),转义字符串(Escape Sequence)

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  4. HTML字符实体(Character Entities),转义字符串(Escape Sequence)【转】

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  5. HTML字符实体(Character Entities),转义字符串(Escape Sequence) 转

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  6. [转]HTML字符实体(Character Entities),转义字符串(Escape Sequence)

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  7. js字符实体 转义字符串

    HTML字符实体(Character Entities),转义字符串(Escape Sequence) 为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,> ...

  8. HTML字符实体(Character Entities)与 转义字符串(Escape Sequence)(转)

    为什么要用转义字符串?HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希望 ...

  9. python正则表达式模块re:正则表达式常用字符、常用可选标志位、group与groups、match、search、sub、split,findall、compile、特殊字符转义

    本文内容: 正则表达式常用字符. 常用可选标志位. group与groups. match. search. sub. split findall. compile 特殊字符转义 一些现实例子 首发时 ...

随机推荐

  1. JavaScript基础学习-函数及作用域

    函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容. (一)JavaS ...

  2. Dynamics CRM 2015-Data Encryption激活报错

    在CRM的日常开发中,Data Encryption经常是不得不开启的一个功能.但是有时,我们可能遇到一种情况,Organization导入之后,查看Data Encryption是已激活的状态,但是 ...

  3. ubuntu14.04下安装node.js

    在网上查了下,起初是下载了一个node-v0.12.7-linux-x64.tar.gz,解压在/home/node路径下,然后在/etc/profile中添加如下命令: export NODE_HO ...

  4. BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]

    4196: [Noi2015]软件包管理器 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1352  Solved: 780[Submit][Stat ...

  5. Spring.Net在Mvc4.0中应用的说明

    案例Demo:http://yunpan.cn/cJ5aZrm7Uybi3 访问密码 414b Spring.Net在Mvc4.0中应用的说明 1.引用dll 2.修改Global文件 (Spring ...

  6. 我的MYSQL学习心得(十七) 复制

    我的MYSQL学习心得(十七) 复制 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  7. 微软开放.NET框架源代码和Mono

    微软一直在朝着更加开放的方向努力.例如,公司首席执行官萨特亚纳德拉(Satya Nadella)在Windows 10预览发布会上声称微软喜欢Linux,这并不出人意料,但是对于一家将Linux视作威 ...

  8. AlloyTeam2015前端大会都说了啥

    昨天在腾讯大厦参与了鹅厂AlloyTeam召开的AC2015前端大会,度过了充满精彩和收获的一个下午,用一句话形容这次前端Event应该是“诚意满满,干货满满”. 说实话,这次AlloyTeam没有对 ...

  9. 关于VS2015支持编译Linux程序的问题

    现状 目前已经发布的VS2015中包括VS2015 Preview 以及 VS2015 CTP6,这两个版本均不支持直接编译C++代码为Linux程序,具体情况可以参考 Visual Studio 2 ...

  10. 白板编程浅谈——Why, What, How

    作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://lucida.me/blog/whiteboard-coding-demystified/ 这篇文章节选 ...