目录

1. HTML Entity

2. 字符与Entity Name的互相转换

3. 字符与Entity Number的互相转换

1. HTML Entity

1.1 介绍

在编写HTML页面时,需要用到"<"、">"、"空格"等符号,直接输入这些符号时,会错误的把它们与标记混在一起,非常不利于编码。

那么就需要把这些字符进行转义,以另一种方式抒写,以相同的形式展现。

在HTML中,这些字符可称为HTML Entity,即HTML 字符实体。一个HTML Entity都含有2种转义格式:Entity Name 和 Entity Number。

可参考MDN关于HTML Entity的解释 :https://developer.mozilla.org/en-US/docs/Glossary/Entity

1.1.1 Entity Name

格式: &entityName;

说明:"&"开头,";"结尾,以语义的形式描述字符。如字符"<",英文名称为"less than",Entity Name为"&lt;",取自"less than"2个单词的首字母。

1.1.2 Entity Number

格式: &#entityNumber;

说明:"&#"开头,";"结尾,以编号的形式描述字符。此编号可以为十进制或十六进制(以"&#x"开头)等数字格式。

1.1.3 示例

<p>字符 :<</p>
<p>Entity Name :&lt;</p>
<p>Entity Number(十进制) :<</p>
<p>Entity Number(十六进制) :<</p>

可看到Entity Name、 Entity Number都在页面显示为"<"字符。

1.2 HTML Entity包括哪些字符呢?

包括但不限于以下字符:ASCII Characters(可见部分)、ISO 8859-1 Characters、ISO 8859-1 Symbols、Math Symbols、Greek Letters、Miscellaneous HTML entities。

在实际编码时不是所有字符都要转义的,比如a-z、A-Z等是没必要转义的。

2. 字符与Entity Name的互相转换

Entity Name 与 字符的互相转换只能依靠字符对照表转换。更多字符对照表可参考:https://www.freeformatter.com/html-entities.html

2.1 ASCII 字符列表:

Character Entity Name Entity Number(十进制)
      &nbsp;
!     &excl; !
"     &quot; "
#     &num; #
$     &dollar; $
%     &percnt; %
&     &amp; &
'     &apos; '
(     &lpar; (
)     &rpar; )
*     &ast; *
+     &plus; +
,     &comma;  ,
-     &hyphen;  -
.     &period; .
/     &sol;  /
:     &colon; :
;     &semi; ;
<     &lt; <
=     &equals; =
>     &gt; >
?     &quest; ?
@     &commat;  @
[     &lsqb;  [
\     &bsol;  \
]     &rsqb; ]
^     &circ; ^
_     &lowbar; _
`     &grave; `
{     &lcub; {
|     &verbar; |
}     &rcub; }
~     &tilde; ~

2.2 字符转换为Entity Name

// ASCII字符集:char 2 entityName
var asciiChartSet_c2en = {
' ': '&nbsp;',
'!': '&excl;',
'"': '&quot;',
'#': '&num;',
'$': '&dollar;',
'%': '&percnt;',
'&': '&amp;',
'\'': '&apos;',
'(': '&lpar;',
')': '&rpar;',
'*': '&ast;',
'+': '&plus;',
',': '&comma;',
'-': '&hyphen;',
'.': '&period;',
'/': '&sol;',
':': '&colon;',
';': '&semi;',
'<': '&lt;',
'=': '&equals;',
'>': '&gt;',
'?': '&quest;',
'@': '&commat;',
'[': '&lsqb;',
'\\': '&bsol;',
']': '&rsqb;',
'^': '&circ;',
'_': '&lowbar;',
'`': '&grave;',
'{': '&lcub;',
'|': '&verbar;',
'}': '&rcub;',
'~': '&tilde;'
} // e.g. 字符转换为Entity Name
var oldStr = '(中文)';
var newStr = oldStr.replace(/(\D{1})/g, function(matched) {
var rs = asciiChartSet_c2en[matched];
return rs == undefined ? matched : rs;
});
console.log(newStr); // => &lpar;中文&rpar;

2.3 Entity Name转换为字符

// ASCII字符集:entityName 2 char
var asciiChartSet_en2c = {
'&nbsp;': ' ',
'&excl;': '!',
'&quot;': '"',
'&num;': '#',
'&dollar;': '$',
'&percnt;': '%',
'&amp;': '&',
'&apos;': '\'',
'&lpar;': '(',
'&rpar;': ')',
'&ast;': '*',
'&plus;': '+',
'&comma;': ',',
'&hyphen;': '-',
'&period;': '.',
'&sol;': '/',
'&colon;': ':',
'&semi;': ';',
'&lt;': '<',
'&equals;': '=',
'&gt;': '>',
'&quest;': '?',
'&commat;': '@',
'&lsqb;': '[',
'&bsol;': '\\',
'&rsqb;': ']',
'&circ;': '^',
'&lowbar;': '_',
'&grave;': '`',
'&lcub;': '{',
'&verbar;': '|',
'&rcub;': '}',
'&tilde;': '~',
} // e.g. Entity Name转换为字符
var oldStr = '&lpar;中文&rpar;';
var newStr = oldStr.replace(/(&.+?;)/g, function(matched) {
var rs = asciiChartSet_en2c[matched];
return rs == undefined ? matched : rs;
});
console.log(newStr); // => (中文)

3. 字符与Entity Number的互相转换

3.1 字符转换为Entity Number

String的实例方法 charCodeAt() 可把指定字符转换为编码:

var charCode = '('.charCodeAt(0); // => 40
var entityNumber = '&#' + charCode + ';' // => (

3.2  Entity Number转换为字符

String的静态方法 fromCharCode() 可把指定编码转换为字符,而Entity Number的编码可以为十进制或16进制,所以转换时进行分别处理:

/**
* Entity Number转换为字符
* @param {String} entityNumber entityNumber
*/
var getCharByEntityNumber = function(entityNumber) {
var num = entityNumber.replace('&#', '').replace(';', '');
if (num.indexOf('x') == 0) {
num = Number.parseInt(num, 16); // 16进制转换为10进制
} else {
num = Number.parseInt(num); // 10进制
}
var char = String.fromCharCode(num);
return char;
} // e.g.
var oldStr = '(中文)';
var newStr = oldStr.replace(/(&#\d+;)/g, function(matched) {
return getCharByEntityNumber(matched);
});
console.log(newStr); // => (中文)
End
菜单加载中...

HTML Entity 字符实体的更多相关文章

  1. HTML Entity 字符实体(字符转义)

    目录 1. HTML Entity 2. 字符与Entity Name的互相转换 3. 字符与Entity Number的互相转换 1. HTML Entity 1.1 介绍 在编写HTML页面时,需 ...

  2. java转换 HTML字符实体,java特殊字符转义字符串

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

  3. JS魔法堂:再识ASCII实体、符号实体和字符实体

    一.前言            相信大家都熟悉通过字符实体   来实现多个连续空格的输入吧!本文打算对三类HTML实体及JS相关操作作进一步的整理和小结,若有纰漏请大家指正,谢谢. 二.初识HTML实 ...

  4. Entity Framework 实体框架的形成之旅--实体框架的开发的几个经验总结

    在前阵子,我对实体框架进行了一定的研究,然后把整个学习的过程开了一个系列,以逐步深入的方式解读实体框架的相关技术,期间每每碰到一些新的问题需要潜入研究.本文继续前面的主题介绍,着重从整体性的来总结一下 ...

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

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

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

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

  7. html中空格字符实体整理

    摘要 浏览器总是会截短 HTML 页面中的空格.如果您在文本中写 10 个空格,在显示该页面之前,浏览器会删除它们中的 9 个.如需在页面中增加空格的数量,您需要使用 字符实体. 本篇就单介绍空格的字 ...

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

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

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

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

随机推荐

  1. win10 uwp 模拟网页输入

    有时候需要获得网页的 js 执行后的源代码,或者模拟网页输入,如点按钮输入文字. 如果需要实现,那么就需要用 WebView ,使用方法很简单. 首先创建一个 WebView ,接下来的所有输入都需要 ...

  2. 解决网络通信中外网和内网之间的通信问题(NAT转换)

    本文原址 http://www.cnblogs.com/lidabo/p/3828846.html 在网络编码中会发现程序在局域网中是可以适用的,但是在外网与内网之间和内网与内网之间就不可行.问题就在 ...

  3. JFinal快速上手及注意事项

    官方手册虽然写的很详细但是忽略的很多小的细节方面,不看源码,网络资料又少,很多新手找不到解决办法.所以养成出了问题,多看源码的习惯 部署helloJFinal 项目结构 - 相关代码 `package ...

  4. jsp中的盲区-面试可能会问到的东西

    1.今天看到一个有趣的JSP题目. <body>    This is my JSP page. <br>    <%        int a = 10;    %&g ...

  5. maven overlays 合并多个war

    http://kyfxbl.iteye.com/blog/1678121 http://jdonee.iteye.com/blog/794226

  6. JAVA中HashMap和Hashtable区别

    Hashtable和HashMap在Java面试中相当容易被问到,甚至成为了集合框架面试题中最常被考的问题,所以在参加任何Java面试之前,都不要忘了准备这一题. 我们先看2个类的定义 public ...

  7. OOAD-设计模式(三)之创建型设计模式(5种)

    前言 前面介绍了OOAD的基础知识,现在我们来详细的说明一下GOF设计模式中的23种模式,希望大家能够学到东西! 一.工厂方法模式(Factory Method) 1.1.工厂方法模式概述 工厂方法模 ...

  8. yii2之依赖注入与依赖注入容器

    一.为什么需要依赖注入 首先我们先不管什么是依赖注入,先来分析一下没有使用依赖注入会有什么样的结果.假设我们有一个gmail邮件服务类GMail,然后有另一个类User,User类需要使用发邮件的功能 ...

  9. C# 使用OpenCV在一张图片里寻找人脸

    先上个效果图 相关库的下载 例程中用到一个库叫做emgucv,是opencv\的net封装 编译打包好的稳定版,在这:https://sourceforge.net/projects/emgucv/f ...

  10. [Scikit-learn] 1.2 Dimensionality reduction - Linear and Quadratic Discriminant Analysis

    Ref: http://scikit-learn.org/stable/modules/lda_qda.html Ref: http://bluewhale.cc/2016-04-10/linear- ...