HTML Entity 字符实体(字符转义)
目录
1. HTML Entity
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为"<",取自"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
// 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转换为字符
// 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() 可把指定字符转换为编码:
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); // => (中文)
HTML Entity 字符实体(字符转义)的更多相关文章
- HTML字符实体和转义字符串大全
转义字符串的组成 转义字符串(Escape Sequence),即字符实体(Character Entity)分成三部分:第一部分是一个&符号,英文叫ampersand:第二部分是实体(Ent ...
- java转换 HTML字符实体,java特殊字符转义字符串
为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...
- 将HTML特殊转义为实体字符的两种实现方式
前端开发工作中,经常需要将HTML的左右尖括号等转义成实体形式.我们不能把<,>,&等直接显示在最终看到的网页里.需要将其转义后才能在网页上显示. 转义字符(Escape Sequ ...
- HTML字符实体(Character Entities),转义字符串(Escape Sequence)
为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...
- HTML字符实体(Character Entities),转义字符串(Escape Sequence)【转】
为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...
- HTML Entity 字符实体
目录 1. HTML Entity 2. 字符与Entity Name的互相转换 3. 字符与Entity Number的互相转换 1. HTML Entity 1.1 介绍 在编写HTML页面时,需 ...
- HTML字符实体(Character Entities),转义字符串(Escape Sequence) 转
为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...
- [转]HTML字符实体(Character Entities),转义字符串(Escape Sequence)
为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...
- HTML字符实体(Character Entities)与 转义字符串(Escape Sequence)(转)
为什么要用转义字符串?HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希望 ...
随机推荐
- Codeblocks 常用快捷键
编辑部分: Ctrl + A:全选Ctrl + C:复制Ctrl + X: 剪切Ctrl + V:粘贴Ctrl + Z:撤销Ctrl + S:保存Ctrl + Y / Ctrl + Shift + Z ...
- SpringBoot+Mybatis多模块(module)项目搭建教程
一.前言 最近公司项目准备开始重构,框架选定为SpringBoot+Mybatis,本篇主要记录了在IDEA中搭建SpringBoot多模块项目的过程. 1.开发工具及系统环境 IDE:Intelli ...
- Spark函数式编程进阶
函数式编程进阶 1.函数和变量一样作为Scala语言的一等公民,函数可以直接复制给变量: 2.函数更长用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称,但是匿名函数赋值给 ...
- 安装android studio&flutter
参考:https://flutterchina.club/setup-windows/ 1.安装jdk 2.android studio下载地址 https://developer.android. ...
- 洛谷.1782.旅行商的背包(背包DP 单调队列)
题目链接(卡常背包) 朴素的多重背包是: \(f[i][j] = \max\{ f[i-1][j-k*v[i]]+k*w[i] \}\),复杂度 \(O(nV*\sum num_i)\) 可以发现求\ ...
- 洛谷P1784 数独
To 洛谷.1784 数独(类似(或者说相同)题:CODEVS.4966 简单数独(4*4数独) CODEVS.2924 数独挑战) 题目描述 数独是根据9×9盘面上的已知数字,推理出所有剩余空格的数 ...
- gitbook构建文档命令
安装node: sudo ln -s /opt/node-v8.3.9-linux-x64/bin/node /usr/local/bin/node sudo ln -s /opt/node-v8.3 ...
- bootstrap中的对话框-dialog-2
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name= ...
- 2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算第三周总结
相关测试过程截图 测试了由中缀表达式转后缀表达式的Junit测试,分别进行了整数的和分数的,测试成功截图 由于生成问题和计算问题中,问题都是随机产生的,暂时不会进行Junit测试,故没有进行,但应是正 ...
- 429. N叉树的层序遍历
429. N叉树的层序遍历 题意 给定一个 N 叉树,返回其节点值的层序遍历. (即从左到右,逐层遍历). 解题思路 和二叉树的层次遍历的思想一样: 实现 class Solution(object) ...