HTML Entity 字元實體(字元轉義)

来源:http://www.cnblogs.com/polk6/archive/2017/11/29/html-entity.html
-Advertisement-
Play Games

在編寫HTML頁面時,需要用到"<"、">"、"空格"等符號,直接輸入這些符號時,會錯誤的把它們與標記混在一起,非常不利於編碼。 那麼就需要把這些字元進行轉義,以另一種方式抒寫,以相同的形式展現。 在HTML中,這些字元可稱為HTML Entity,即HTML 字元實體。一個HTML Entity... ...


目錄

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(十進位) :&#60;</p>
<p>Entity Number(十六進位) :&#x3c;</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; &#32;
!     &excl; &#33;
"     &quot; &#34;
#     &num; &#35;
$     &dollar; &#36;
%     &percnt; &#37;
&     &amp; &#38;
'     &apos; &#39;
(     &lpar; &#40;
)     &rpar; &#41;
*     &ast; &#42;
+     &plus; &#43;
,     &comma;  &#44;
-     &hyphen;  &#45;
.     &period; &#46;
/     &sol;  &#47;
:     &colon; &#58;
;     &semi; &#59;
<     &lt; &#60;
=     &equals; &#61;
>     &gt; &#62;
?     &quest; &#63;
@     &commat;  &#64;
[     &lsqb;  &#91;
\     &bsol;  &#92;
]     &rsqb; &#93;
^     &circ; &#94;
_     &lowbar; &#95;
`     &grave; &#96;
{     &lcub; &#123;
|     &verbar; &#124;
}     &rcub; &#125;
~     &tilde; &#126;

 

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 = '&#40;中文&#41;';
var newStr = oldStr.replace(/(&#\d+;)/g, function(matched) {
    return getCharByEntityNumber(matched);
});
console.log(newStr); // => (中文)

 

==================================系列文章==========================================

本篇文章:1.8 HTML Entity 字元實體(字元轉義)

Web開發之路系列文章

 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • HTML頁面跳轉: window.open(url, "", "width=600,height=400"); 第二個參數:_self,在當前視窗打開視窗;_blank(預設值),在另外的新建視窗打開新視窗; window.location.href="http://www.jb51.net"; / ...
  • 問題如下圖所示: 一般處理此類問題都會有一個屬性:”event.preventDefault()”,但是如果直接使用會導致頁面的內部滾動也失效導致不能滾動,我所處理的方式也與其類似。 因為滑動區域是向走的,所以滑動塊的頂部到瀏覽器頂部的距離最大為0(其餘為負值[$('#bodycthead').of ...
  • 1.JavaScript中的註釋方式有以下兩種 // This is an in-line comment. /* This is a multi-line comment */ 2.avaScript提供七種不同的data types(數據類型), undefined(未定義) null(空) b ...
  • HTML5樣式、鏈接和表格HTML5列表<ol> 有序列表<ul> 無序列表<li> 列表項 <dl> 列表<dt> 列表項<dd> 描述 1.無序列表 使用<ul>、<li> 屬性:disc、circle、square2.有序列表 使用<ol>、<li> 屬性:A、a、I、i、start3.嵌套列 ...
  • css3選擇器是在css2.0的基礎上的修改創新。他增加了一些UI元素狀態偽類選擇器、結構偽類選擇器、屬性選擇器等。 ...
  • 知識點一: CSS概念:CSS 指層疊樣式表 (Cascading Style Sheets)(級聯樣式表) Css是用來美化html標簽的,相當於頁面化妝。 知識點二: 選擇器格式與部分屬性: 寫法: 選擇器是一個選擇(一/多個)標簽的過程。 對應的屬性與值表: Width:20px; 寬 Hei ...
  • Vue2自定義指令改變DOM值後未刷新data中綁定屬性的值. ...
  • 知識點一:HTML Hyper Text Markup Language 超文本標記語言。 HTML標準結構: 尾碼名:Html與htm是一樣的, 尾碼名不能決定文件格式,只能決定打開文件的方式。 HTML標簽的分類: 基礎標簽: 知識點二: 路徑: 相對路徑: 相對於文件本身出發的路徑,如果在當前 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...