[TOC]
二、字符实体
1. ASCII 部分实体字符列表
字符 实体名称 实体编号
  // 空格
< < < // 小于号
> > > // 大于号
& & & // 和号
! ! !
" " "
# # #
$ $ $
% % %
' ' '
( ( (
) ) )
* * *
+ + +
, , ,
- ‐ -
. . .
/ / /
: : :
; ; ;
= = =
? ? ?
@ @ @
[ [ [
\ \ \
] ] ]
^ ˆ ^
_ _ _
` ` `
{ { {
| | |
} } }
~ ˜ ~
更多参考:https://www.freeformatter.com/html-entities.html#ascii-characters
2. HTML Entity介绍
在HTML中有的字符是预留的,比如小于号(<)和大于号(>),如果直接写,浏览器会把他们当成标签,如果想要正确的显示预留字符,就必须要在HTML的源代码中使用字符实体(character entities)。
字符实体类似于这样:
&entity_name;
或者
&#entity_number;
<p>字符 :<</p>
<p>Entity Name :<</p>
<p>Entity Number(十进制) :<</p>
<p>Entity Number(十六进制) :<</p>
2.1 Entity Name 实体名称
格式: &entityName;
说明:"&"开头,";"结尾,以语义的形式描述字符。如字符"<",英文名称为"less than",Entity Name为"<",取自"less than"2个单词的首字母。
2.2 Entity Number 实体编号
格式: &#entityNumber;
说明:"&#"开头,";"结尾,以编号的形式描述字符。此编号可以为十进制或十六进制(以"&#x"开头)等数字格式。
3. 字符与实体编号互转
3.1 字符转实体编号
String的实例方法 charCodeAt() 可把指定字符转换为编码:
var charCode = '<'.charCodeAt(0); // => 40
var entityNumber = '&#' + charCode + ';'; // => (
3.2 实体编号转字符
String的静态方法 fromCharCode() 可把指定编码转换为字符,而Entity Number的编码可以为十进制或16进制,所以转换时进行分别处理:
var getChar = function(entityNumber) {
var num = entityNumber.replace('&#', '').replace(';', '');
if (num.indexOf('x') == 0 || 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 getChar(matched);
});
console.log(newStr); // => (中文)