文章出處

形如——

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

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

以 HTML 為例,這三種轉義序列都稱作 character reference:

  • 前兩種是 numeric character reference(NCR),數字取值為目標字符的 Unicode code point;以「&#」開頭的后接十進制數字,以「&#x」開頭的后接十六進制數字。
  • 后一種是 character entity reference,后接預先定義的 entity 名稱,而 entity 聲明了自身指代的字符。

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

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

中国
中国

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

NCR 可以用于轉義任何 Unicode 字符,而 character entity reference 很受限,參見 HTML 4 和 HTML5 中已有定義的字符列表:


 

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, NCRNumeric Character ReferenceUnicode

 

telecomadmin+8位数字

 

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

25968)&ChrW(23383)

numeric character reference(NCR),直譯就是數字字符引用。一個Numeric Character Reference編碼是由一個與號(&)跟著一個井號(#),然后跟著這個字符的Unicode編碼值,最后跟著一個分號組成的,就像上面的例子一樣。

這篇文章發布于 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

Character entity references,也就是通常我們說得 html實體字符,一些字符在 HTML 中擁有特殊的含義,比如小于號 (<) 用于定義 HTML 標簽的開始。如果我們希望瀏覽器正確地顯示這些字符,我們必須在 HTML 源碼中插入字符實體。

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


這里

NCR編碼是由一個與號(&)跟著一個井號(#), 然后跟著這個字符的Unicode編碼值, 最后跟著一個分號組成的, 如:

    &#nnnn;
或者
&#xhhhh
&amp; //&
&nbsp; //空格
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; //

答:可以使用NCR的方式,先找到字符對應的UNICODE編碼,以小于號為例,unicode編碼16進制為3C(10進制為60),在html則可以使用&#x3C或&#60,跟上面的表格對照看是否相同,由此我們也可以知道,如果我們的html所采用的編碼不支持一些字符(比如其他國家的字符),則可以通過NCR來引入我們的頁面就不會亂碼了

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

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


http://www.cnblogs.com/shishm/archive/2011/11/24/2261996.html


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()