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为"<",取自"less than"2个单词的首字母。
1.1.2 Entity Number
格式: &#entityNumber;
说明:"&#"开头,";"结尾,以编号的形式描述字符。此编号可以为十进制或十六进制(以"&#x"开头)等数字格式。
1.1.3 示例
<p>字符 :<</p>
<p>Entity Name :<</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(十进制) |
| ||
! | ! | ! |
" | " | " |
# | # | # |
$ | $ | $ |
% | % | % |
& | & | & |
' | ' | ' |
( | ( | ( |
) | ) | ) |
* | * | * |
+ | + | + |
, | , | , |
- | ‐ | - |
. | . | . |
/ | / | / |
: | : | : |
; | ; | ; |
< | < | < |
= | = | = |
> | > | > |
? | ? | ? |
@ | @ | @ |
[ | [ | [ |
\ | \ | \ |
] | ] | ] |
^ | ˆ | ^ |
_ | _ | _ |
` | ` | ` |
{ | { | { |
| | | | | |
} | } | } |
~ | ˜ | ~ |
2.2 字符转换为Entity Name
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// ASCII字符集:char 2 entityName var asciiChartSet_c2en = { ' ' : ' ' , '!' : '!' , '"' : '"' , '#' : '#' , '$' : '$' , '%' : '%' , '&' : '&' , '\'' : ''' , '(' : '(' , ')' : ')' , '*' : '*' , '+' : '+' , ',' : ',' , '-' : '‐' , '.' : '.' , '/' : '/' , ':' : ':' , ';' : ';' , '<' : '<' , '=' : '=' , '>' : '>' , '?' : '?' , '@' : '@' , '[' : '[' , '\\' : '\' , ']' : ']' , '^' : 'ˆ' , '_' : '_' , '`' : '`' , '{' : '{' , '|' : '|' , '}' : '}' , '~' : '˜' } // 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); // => (中文) |
2.3 Entity Name转换为字符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// ASCII字符集:entityName 2 char var asciiChartSet_en2c = { ' ' : ' ' , '!' : '!' , '"' : '"' , '#' : '#' , '$' : '$' , '%' : '%' , '&' : '&' , ''' : '\'' , '(' : '(' , ')' : ')' , '*' : '*' , '+' : '+' , ',' : ',' , '‐' : '-' , '.' : '.' , '/' : '/' , ':' : ':' , ';' : ';' , '<' : '<' , '=' : '=' , '>' : '>' , '?' : '?' , '@' : '@' , '[' : '[' , '\' : '\\' , ']' : ']' , 'ˆ' : '^' , '_' : '_' , '`' : '`' , '{' : '{' , '|' : '|' , '}' : '}' , '˜' : '~' , } // e.g. Entity Name转换为字符 var oldStr = '(中文)' ; 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() 可把指定字符转换为编码:
1
2
|
var charCode = '(' .charCodeAt(0); // => 40 var entityNumber = '&#' + charCode + ';' // => ( |
3.2 Entity Number转换为字符
String的静态方法 fromCharCode() 可把指定编码转换为字符,而Entity Number的编码可以为十进制或16进制,所以转换时进行分别处理:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/** * 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); // => (中文) |
转自https://www.cnblogs.com/polk6/p/html-entity.html
HTML Entity的更多相关文章
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- Entity Framework Core 1.1 升级通告
原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...
- Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- 来,给Entity Framework热热身
先来看一下Entity Framework缓慢的初始化速度给我们更新程序带来的一种痛苦. 我们手动更新程序时通常的操作步骤如下: 1)把Web服务器从负载均衡中摘下来 2)更新程序 3)预热(发出一个 ...
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- Entity Framework教程(第二版)
源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...
- 一次修改闭源 Entity Provider 程序集以兼容新 EntityFramework 的过程
读完本文你会知道,如何在没有源码的情况下,直接修改一个 DLL 以去除 DLL 上的强命名限制,并在该程序集上直接添加你的“友元程序集(一种特殊的 Attribute,将它应用在程序集上,使得程序集内 ...
- Entity Framework 6 Recipes 2nd Edition 译 -> 目录 -持续更新
因为看了<Entity Framework 6 Recipes 2nd Edition>这本书前面8章的翻译,感谢china_fucan. 从第九章开始,我是边看边译的,没有通读,加之英语 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点
在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...
随机推荐
- 机器码-字节码-CLR-JIT-托管代码-非托管代码-unsafe-GC-fixed
0. 机器码 直接由机器码对应平台的CPU执行的指令集, 因此无法在其他指令集的CPU上运行. 无法跨平台. 由本地代码编译得到. (托管代码通过JIT生成) 1. 字节码 即 bytecode 是一 ...
- centOS学习part5:oracle 11g安装之环境准备
0 前几篇依次向大家介绍了centOS的基本安装以及常用软件的安装配置,接下来我们将挑战的是oracle 11g的安装配置.与之前安装的软件不一样的是,由于oracle并非开源免费软件(需要向orac ...
- wireshark语法小结
https://blog.csdn.net/cumirror/article/details/7054496 过滤重传包 https://blog.csdn.net/Joseph_ChiRunning ...
- 3.kafka 基本配置
1.主题管理 kafka-topics.sh工具脚本用于对主题操作,如创建.删除.修改.分区数.副本数及主题级别的配置. 1.1创建名为kafka-test主题,有2个副本,3个分区 [hadoop@ ...
- c# 使用泛型集合List<T>
- mysql学习之基础篇06
子查询:又分为where型子查询,from型子查询,exists型子查询这三类. where型子查询:指把内层查询的结果作为外层查询的比较条件: 举个例子: 我们想查出goods_id最大的商品,要求 ...
- TP5框架模块绑定二级域名
application\config.php 修改 url_domain_deploy 为 true 'url_domain_deploy' => true application\route. ...
- Monitor 实现阻塞队列 + 生产消费者实例
转载至 https://www.codeproject.com/Articles/28785/Thread-synchronization-Wait-and-Pulse-demystified /* ...
- cube.js 学习(二)cube.js与 graphql2chartjs的比较
cube.js 是目前看到从设计以及理念上很不错的数据分析事件,graphql2chartjs 是hasura graphql-engine 团队开发 的一个类库基于graphql,以下做一些比较 c ...
- web场景的监控
在一台可以连外网的主机上创建web场景, 添加步骤,zabbix可以步骤化web页面,例如,登陆操作,正常操作是要先验证用户获取token,step1就可以是先访问token页面,获取到返回的toke ...