摘要:中國二字分別是字符和,十六進(jìn)制表示的數(shù)值和就是十進(jìn)制的和。所以這兩種寫法都會在顯示時轉(zhuǎn)換為中國二字。如中國等同與中文中國字符編碼和一
開發(fā)過程中遇到一種奇怪的編碼格式:
每日一色|蓝白~
使用decode/unescape/decodeURI解碼均無效.研究一番,總結(jié)一下.
實(shí)際上上面這種奇怪的編碼格式并不是編碼,而是一種叫做 NCR(Numeric Character Reference) 的標(biāo)記結(jié)構(gòu).
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是一種常見的標(biāo)記結(jié)構(gòu),用于SGML和其他SGML相似的標(biāo)記語言,如HTML和XML。它由一個短的字符序列組成,代表一個字符(全球的文字字符)。
NCR編碼是由一個與號(&)跟著一個井號(#), 然后跟著這個字符的Unicode編碼值, 最后跟著一個分號組成的, 如:
ffffdd; hhhh; name;
其中, ffffdd是字符編碼的十進(jìn)制表示, 而hhhh是字符的16進(jìn)制表示.
以 HTML 為例,這三種轉(zhuǎn)義序列都稱作 character reference:
前兩種是 numeric character reference(NCR),數(shù)字取值為目標(biāo)字符的 Unicode code point;以「」開頭的后接十進(jìn)制數(shù)字,以「」開頭的后接十六進(jìn)制數(shù)字。
后一種是 character entity reference,后接預(yù)先定義的 entity 名稱,而 entity 聲明了自身指代的字符。
從 HTML 4 開始,NCR 以 Unicode 為準(zhǔn),與文檔編碼無關(guān)。
「中國」二字分別是 Unicode 字符 U+4E2D 和 U+56FD,十六進(jìn)制表示的 code point 數(shù)值「4E2D」和「56FD」就是十進(jìn)制的「20013」和「22269」。所以——
中国 中国
——這兩種 NCR 寫法都會在顯示時轉(zhuǎn)換為「中國」二字。
如何將 NCR 字符轉(zhuǎn)換成真實(shí)字符方法如下:
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 編碼轉(zhuǎn)為真實(shí)字符.
博客文章地址: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(一)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79408.html
摘要:第一個字符的位置是,第二個字符的位置是,以此類推。和不同的是,數(shù)字的值不會被當(dāng)做字符的順序值。搜索位置的偏移。如果沒有提供該參數(shù),將會使用。負(fù)數(shù)的會從字符串尾部開始統(tǒng)計(jì)。如果省略,則使用內(nèi)部字符編碼。返回的中首次出現(xiàn)位置的數(shù)值。 mb_strpos (PHP 4 >= 4.0.6, PHP 5, PHP 7) mb_strpos — Find position of first oc...
摘要:由于最近一個項(xiàng)目需要需要學(xué)習(xí)知識學(xué)習(xí)的過程中做了一些筆記主要以知識點(diǎn)記錄為主現(xiàn)在分享出來供參考大部分內(nèi)容是參考的自強(qiáng)學(xué)堂這里做了歸納接口在中接口可理解為對象間相互通信的協(xié)議接口在繼承中扮演著很重要的角色接口只定義派生要用到的方法但方法的具體 由于最近一個項(xiàng)目需要,需要學(xué)習(xí)JAVA知識,學(xué)習(xí)的過程中做了一些筆記,主要以知識點(diǎn)記錄為主,現(xiàn)在分享出來供參考.大部分內(nèi)容是參考的自強(qiáng)學(xué)堂.這里做...
摘要:盲目使用替換后可能會導(dǎo)致預(yù)期意外的結(jié)果。在中,許多種方法來處理函數(shù)的參數(shù)默認(rèn)值,參數(shù)數(shù)量,參數(shù)命名。此外,處理后的值,無論是解決還是拒絕的結(jié)果值,都是不可改變的。 這是一個 ES2015(ES6) 的Cheatsheet,其中包括提示、小技巧、最佳實(shí)踐和一些代碼片段,幫助你完成日復(fù)一日的開發(fā)工作。 Table of Contents var 與 let / const 聲明 代碼執(zhí)行...
摘要:詞法結(jié)構(gòu)字符集字符集程序是用字符集編寫的注釋支持兩種格式的注釋單行注釋另一個注釋也是一個注釋這是一個多行注釋直接量直接量程序中直接使用的數(shù)據(jù)值標(biāo)識符和保留字標(biāo)識符就是一個名字,用來對變量和函數(shù)命名,或者用作代碼中某些循環(huán)語句中的跳轉(zhuǎn)位置的標(biāo) 1 詞法結(jié)構(gòu) 1.1 字符集 字符集:JS程序是用Unicode字符集編寫的 1.2 注釋 js支持兩種格式的注釋 // 單行注釋 /* 另一...
摘要:它們都用于聲明變量。盲目使用替換后可能會導(dǎo)致預(yù)期意外的結(jié)果。有鑒于此,還是建議使用字符串,布爾和數(shù)字類型的數(shù)據(jù)類型。像使用這種下劃線命名約定在一個開源項(xiàng)目中,命名規(guī)則很難維持得一直很好,這樣經(jīng)常會造成一些困擾。 今天群里有小伙伴跟我聊天,問了我?guī)讉€關(guān)于ES6的問題,我才意識到,大部分初學(xué)者在學(xué)習(xí)的過程中,都是學(xué)了HTML/CSS/JS之后就開始上手學(xué)習(xí)框架了,而對于ES6的重視程度卻不...
閱讀 1143·2021-08-12 13:24
閱讀 2990·2019-08-30 14:16
閱讀 3315·2019-08-30 13:01
閱讀 2078·2019-08-30 11:03
閱讀 2779·2019-08-28 17:53
閱讀 3093·2019-08-26 13:50
閱讀 2273·2019-08-26 12:00
閱讀 956·2019-08-26 10:38