摘要:中國二字分別是字符和,十六進制表示的數值和就是十進制的和。所以這兩種寫法都會在顯示時轉換為中國二字。如中國等同與中文中國字符編碼和一
開發過程中遇到一種奇怪的編碼格式:
每日一色|蓝白~
使用decode/unescape/decodeURI解碼均無效.研究一番,總結一下.
實際上上面這種奇怪的編碼格式并不是編碼,而是一種叫做 NCR(Numeric Character Reference) 的標記結構.
Numeric Character Reference看看維基百科的解釋:
A numeric character reference (NCR) is a common markup construct used in SGML and other SGML-related markup languages such as HTML and XML. It consists of a short sequence of characters that, in turn, represent a single character from the Universal Charact
NCR是一種常見的標記結構,用于SGML和其他SGML相似的標記語言,如HTML和XML。它由一個短的字符序列組成,代表一個字符(全球的文字字符)。
NCR編碼是由一個與號(&)跟著一個井號(#), 然后跟著這個字符的Unicode編碼值, 最后跟著一個分號組成的, 如:
ffffdd; hhhh; name;
其中, ffffdd是字符編碼的十進制表示, 而hhhh是字符的16進制表示.
以 HTML 為例,這三種轉義序列都稱作 character reference:
前兩種是 numeric character reference(NCR),數字取值為目標字符的 Unicode code point;以「」開頭的后接十進制數字,以「」開頭的后接十六進制數字。
后一種是 character entity reference,后接預先定義的 entity 名稱,而 entity 聲明了自身指代的字符。
從 HTML 4 開始,NCR 以 Unicode 為準,與文檔編碼無關。
「中國」二字分別是 Unicode 字符 U+4E2D 和 U+56FD,十六進制表示的 code point 數值「4E2D」和「56FD」就是十進制的「20013」和「22269」。所以——
中国 中国
——這兩種 NCR 寫法都會在顯示時轉換為「中國」二字。
如何將 NCR 字符轉換成真實字符方法如下:
var regex_num_set = /(d+);/g; var str = "Here is some text: 每日一色|蓝白~" str = str.replace(regex_num_set, function(_, $1) { return String.fromCharCode($1); }); document.write(""+JSON.stringify(str,0,3));以上例子使用了 String.prototype.replace() 和 String.fromCharCode() 方法. 思路為將字符串中的 NCR 字符逐個獲取到 ""和";"間的 Unicode 字符編碼值, 然后利用 String.fromCharCode() 方法, 將 Unicode 編碼轉為真實字符.
博客文章地址:http://joebon.cc/convert-numeric-chracter-reference-to-actual-character
參考資料開頭的是什么編碼呢。瀏覽器可以解釋它。如中國等同與中文"中國"?
Converting numeric character reference to actual character
String.prototype.replace()
[字符編碼]Numeric Character Reference和HTML Entities(一)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79408.html
摘要:第一個字符的位置是,第二個字符的位置是,以此類推。和不同的是,數字的值不會被當做字符的順序值。搜索位置的偏移。如果沒有提供該參數,將會使用。負數的會從字符串尾部開始統計。如果省略,則使用內部字符編碼。返回的中首次出現位置的數值。 mb_strpos (PHP 4 >= 4.0.6, PHP 5, PHP 7) mb_strpos — Find position of first oc...
摘要:由于最近一個項目需要需要學習知識學習的過程中做了一些筆記主要以知識點記錄為主現在分享出來供參考大部分內容是參考的自強學堂這里做了歸納接口在中接口可理解為對象間相互通信的協議接口在繼承中扮演著很重要的角色接口只定義派生要用到的方法但方法的具體 由于最近一個項目需要,需要學習JAVA知識,學習的過程中做了一些筆記,主要以知識點記錄為主,現在分享出來供參考.大部分內容是參考的自強學堂.這里做...
摘要:盲目使用替換后可能會導致預期意外的結果。在中,許多種方法來處理函數的參數默認值,參數數量,參數命名。此外,處理后的值,無論是解決還是拒絕的結果值,都是不可改變的。 這是一個 ES2015(ES6) 的Cheatsheet,其中包括提示、小技巧、最佳實踐和一些代碼片段,幫助你完成日復一日的開發工作。 Table of Contents var 與 let / const 聲明 代碼執行...
摘要:詞法結構字符集字符集程序是用字符集編寫的注釋支持兩種格式的注釋單行注釋另一個注釋也是一個注釋這是一個多行注釋直接量直接量程序中直接使用的數據值標識符和保留字標識符就是一個名字,用來對變量和函數命名,或者用作代碼中某些循環語句中的跳轉位置的標 1 詞法結構 1.1 字符集 字符集:JS程序是用Unicode字符集編寫的 1.2 注釋 js支持兩種格式的注釋 // 單行注釋 /* 另一...
摘要:它們都用于聲明變量。盲目使用替換后可能會導致預期意外的結果。有鑒于此,還是建議使用字符串,布爾和數字類型的數據類型。像使用這種下劃線命名約定在一個開源項目中,命名規則很難維持得一直很好,這樣經常會造成一些困擾。 今天群里有小伙伴跟我聊天,問了我幾個關于ES6的問題,我才意識到,大部分初學者在學習的過程中,都是學了HTML/CSS/JS之后就開始上手學習框架了,而對于ES6的重視程度卻不...
閱讀 1134·2021-08-12 13:24
閱讀 2983·2019-08-30 14:16
閱讀 3308·2019-08-30 13:01
閱讀 2070·2019-08-30 11:03
閱讀 2773·2019-08-28 17:53
閱讀 3088·2019-08-26 13:50
閱讀 2267·2019-08-26 12:00
閱讀 948·2019-08-26 10:38