形如——
&#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特殊字符解碼)
代碼如下:
- package test.com.gjob.services;
- import java.io.IOException;
- import java.io.Writer;
- public class HtmlEncoder {
- public static void main(String args[]){
- System.out.println(HtmlEncoder.encode("你好"));
- }
- /***
-
- }
http://www.blogjava.net/jerry-zhaoj/archive/2009/03/24/261730.html
html, NCR, Numeric
Character Reference, Unicode
http://demon.tw/programming/numeric-character-reference.html
版權: 本博客的所有文章,都遵守“署名-非商業性使用-相同方式共享 2.5 中國大陸”協議條款。
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 文檔中顯示小于號,我們需要這樣寫:< 或者 <
這里
NCR編碼是由一個與號(&)跟著一個井號(#), 然后跟著這個字符的Unicode編碼值, 最后跟著一個分號組成的, 如:
&#nnnn;
或者
&#xhhhh
//空格
2 U+00A0 ISOnum -->
3 <!ENTITY iexcl CDATA "¡" -- inverted exclamation mark, U+00A1 ISOnum -->
4 <!ENTITY cent CDATA "¢" -- cent sign, U+00A2 ISOnum -->
5 <!ENTITY pound CDATA "£" -- pound sign, U+00A3 ISOnum -->
6 <!ENTITY curren CDATA "¤" -- currency sign, U+00A4 ISOnum -->
7 <!ENTITY yen CDATA "¥" -- yen sign = yuan sign, U+00A5 ISOnum -->
8 <!ENTITY brvbar CDATA "¦" -- broken bar = broken vertical bar,
9 U+00A6 ISOnum -->
而:
å //
答:可以使用NCR的方式,先找到字符對應的UNICODE編碼,以小于號為例,unicode編碼16進制為3C(10進制為60),在html則可以使用<或<,跟上面的表格對照看是否相同,由此我們也可以知道,如果我們的html所采用的編碼不支持一些字符(比如其他國家的字符),則可以通過NCR來引入我們的頁面就不會亂碼了。
有一天,我的一個好朋友在調試webservice時發現對方的接口返回類似&#xhhhh這樣的東西,一時不知道如何處理,如何轉換為我們想要的編碼呢?下一篇文章將提供通用的轉換程序,敬請期待!
最后感謝網絡上無名的作者,是你們的博文讓我學得更多,謝謝!如不小心引入您的博文內容而未帶上出處,請告知我一聲。
http://www.cnblogs.com/shishm/archive/2011/11/24/2261996.html
文章列表