&#x開頭的是什麼編碼呢。瀏覽器能夠解釋它。如中國等同與中文"中國"?

形如——
html

&#dddd;&#xhhhh;&#name;

——的一串字符是 HTML、XML 等 SGML 類語言的轉義序列(escape sequence)。它們不是「編碼」。

以 HTML 爲例,這三種轉義序列都稱做 character reference:
html5

  • 前兩種是 numeric character reference(NCR),數字取值爲目標字符的 Unicode code point;以「&#」開頭的後接十進制數字,以「&#x」開頭的後接十六進制數字。java

  • 後一種是 character entity reference,後接預先定義的 entity 名稱,而 entity 聲明瞭自身指代的字符。
    web

從 HTML 4 開始,NCR 以 Unicode 爲準,與文檔編碼無關。

「中國」二字分別是 Unicode 字符 U+4E2D 和 U+56FD,十六進制表示的 code point 數值「4E2D」和「56FD」就是十進制的「20013」和「22269」。因此——
shell

中国中国

——這兩種 NCR 寫法都會在顯示時轉換爲「中國」二字。瀏覽器

NCR 能夠用於轉義任何 Unicode 字符,而 character entity reference 很受限,參見 HTML 4 和 HTML5 中已有定義的字符列表:
網絡


http://www.zhihu.com/question/21390312
編碼

HtmlEncoder,中文轉換成&#開頭的編碼(及HTML特殊字符解碼)



如題: HtmlEncoder,中文轉換成&#開頭的編碼(及HTML特殊字符解碼)
 代碼以下:

  1. package test.com.gjob.services;

  2. import java.io.IOException;

  3. import java.io.Writer;

  4. public class HtmlEncoder {

  5.      public static void main(String args[]){

  6.          System.out.println(HtmlEncoder.encode("你好"));

  7.      }

  8.      

  9.      /***

  10.     

  11. }


http://www.blogjava.net/jerry-zhaoj/archive/2009/03/24/261730.html


HTML,Unicode與NCR(數字字符引用)



標籤: htmlNCRNumeric Character ReferenceUnicode

標題: HTML,Unicode與NCR(數字字符引用)
做者: Demon
連接: http://demon.tw/programming/numeric-character-reference.html
版權: 本博客的全部文章,都遵照「署名-非商業性使用-相同方式共享 2.5 中國大陸」協議條款。

昨天ihipop問的一個問題,下面是什麼編碼?

telecomadmin+8位数字

根據常識判斷,&#後面的數字應該是Unicode編碼值,寫個VBS驗證:

MsgBox ChrW(20301)&ChrW(25968)&ChrW(23383)

輸出「位數字」,連起來就是「telecomadmin+8位數字」,讀起來挺通順的,看來是Unicode沒錯了。

Google了一下,這東西專業名稱叫numeric character reference(NCR),直譯就是數字字符引用。一個Numeric Character Reference編碼是由一個與號(&)跟着一個井號(#),而後跟着這個字符的Unicode編碼值,最後跟着一個分號組成的,就像上面的例子同樣。

有了數字字符引用,就能夠在網頁中顯示Unicode字符了,不用考慮html文件自己的編碼,由於數字字符引用只用到ASCII字符集裏的字符。因此,即便在gb2312編碼的網頁中,也能夠用NCR顯示埃及的象形文字了。

這篇文章發佈於 2011年04月9日,星期六,21:43,歸類於 程序設計。 您能夠跟蹤這篇文章的評論經過 RSS 2.0 feed。 您能夠留下評論,或者從您的站點trackback

http://demon.tw/programming/numeric-character-reference.html


[字符編碼]Numeric Character Reference和HTML Entities


   你是否在dreamweaver裏編輯網頁的時候看到Σ這樣的東西,你曾使用過 這樣的玩意吧,或者你在調試webservice的時候看到返回xml字符串中現γ這樣的怪物呢?你看不懂他們可能用瀏覽器或者DW預覽一下都是能夠看到廬山真面目的,它是誰?

    Σ這個是 Numeric Character Reference

     這個是Character entities references

從字面上觀察,一個是用&#x+16進制+; 表達信息,一個是用&+字符串+;    忽然讓我想起了彙編語言裏頭的 助記符 跟 實際二進制指令代碼,帶着這個猜想往下看吧!

 Character entities references

HTML 中規定了 Character entity references,也就是一般咱們說得 html實體字符,一些字符在 HTML 中擁有特殊的含義,好比小於號 (<) 用於定義 HTML 標籤的開始。若是咱們但願瀏覽器正確地顯示這些字符,咱們必須在 HTML 源碼中插入字符實體。

字符實體有三部分:一個和號 (&),一個實體名稱,或者 # 和一個實體編號,以及一個分號 (;)。要在 HTML 文檔中顯示小於號,咱們須要這樣寫:&lt; 或者 &#60;

並非全部的瀏覽器都支持最新的實體名稱,不一樣的瀏覽器中須要去驗證哪些能夠被識別哪些不能被識別,下圖中的「撇號」在IE下就不能支持,對於不支持的實體名稱能夠用另外的方式解決,繼續閱讀下一段吧。

注意:實體對大小寫敏感。


比較全面的列表請參看:這裏

參考:http://www.w3school.com.cn/html/html_entities.asp

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編碼值, 最後跟着一個分號組成的, 如:

 
 
    &#nnnn;
    或者
    &#xhhhh

其中, nnnn是字符編碼的十進制表示, 而hhhh是字符的16進製表示.

另外要注意的是x在xml中必須是小寫的.而hhhh能夠大小寫混用, 另外nnnn和hhhh也能夠有前導零.

HTML Entites與NCR不一樣, HTML字符實體的名字必須是在HTML中已經定義的才能被使用,好比:

    &amp;     &nbsp;


若是是XML的話,必須在DTD中定義過, 相似:

1     <!ENTITY nbsp CDATA "&#160;" -- no-break space = non-breaking space,
2                                      U+00A0 ISOnum -->
3 <!ENTITY iexcl CDATA "&#161;" -- inverted exclamation mark, U+00A1 ISOnum -->
4 <!ENTITY cent CDATA "&#162;" -- cent sign, U+00A2 ISOnum -->
5 <!ENTITY pound CDATA "&#163;" -- pound sign, U+00A3 ISOnum -->
6 <!ENTITY curren CDATA "&#164;" -- currency sign, U+00A4 ISOnum -->
7 <!ENTITY yen CDATA "&#165;" -- yen sign = yuan sign, U+00A5 ISOnum -->
8 <!ENTITY brvbar CDATA "&#166;" -- broken bar = broken vertical bar,
9                                      U+00A6 ISOnum -->


其中, 名字是大小寫敏感的. 好比:


    &Aring;     而:
    &aring;


到此,咱們來回答一下上面提出的問題,在html中沒有規定的字符實體名稱或不被瀏覽器支持的一些實體,怎麼辦呢?

答:能夠使用NCR的方式,先找到字符對應的UNICODE編碼,以小於號爲例,unicode編碼16進製爲3C(10進製爲60),在html則能夠使用&#x3C或&#60,跟上面的表格對照看是否相同,由此咱們也能夠知道,若是咱們的html所採用的編碼不支持一些字符(好比其餘國家的字符),則能夠經過NCR來引入咱們的頁面就不會亂碼了

      有一天,個人一個好朋友在調試webservice時發現對方的接口返回相似&#xhhhh這樣的東西,一時不知道如何處理,如何轉換爲咱們想要的編碼呢?下一篇文章將提供通用的轉換程序,敬請期待!

     最後感謝網絡上無名的做者,是大家的博文讓我學得更多,謝謝!如不當心引入您的博文內容而未帶上出處,請告知我一聲。

相關文章
相關標籤/搜索