ITPub博客

首页 > IT基础架构 > 网络安全 > html unicode convert

html unicode convert

原创 网络安全 作者:liang573728 时间:2019-06-20 17:51:05 0 删除 编辑

最近遇到的一些編碼問題,時常在網頁裡面看到 &#xxxxxxx; 的字碼,透過瀏覽器,會將這些 unicode html code 轉成可以顯示的文字,例如:對於冷え性や生活習慣病,在網頁上看起來很正常,但是一但轉回到原始碼(HTML code)編輯的時候,就會變成:對於冷え性や生活習慣病,這個樣子。

翻了 Google 大神,這個東西是因為編碼的關係,在 BIG-5 編碼中若是沒有可以顯示的文字,這些文字就會經過特殊的演算法則轉換成 &#xxxxxx; 這種樣子,這些就稱為 unicode html。麻煩的是,在儲存資料的時候,我並不希望會有這種東西出現,尤其是要將原本是 BIG-5 的資料轉換為 UTF-8 的時候,這些東西就很討厭。

依據大神的指示,這些字碼的來源,大概可以這麼解釋:unicode html 字碼來元是由原本的編碼,轉換為 UCS-2 之後,再取二進制轉換,再取一次 16 to 10 進制轉換,在加上 &# 而得到這個字碼。

以 PHP 來說,他大概是這個樣子:

1. 2. $str = "温";
3. $unicodeHtml = base_convert(bin2hex(iconv("utf-8", "ucs-2", $str)), 16, 10);
4. print "&#".$unicodeHTML.";"
5. ?>
6. // 顯示結果
7. 温
以上的例子就是將文字轉換為 unicode html 的方式,那麼,轉回來呢,很簡單,將上述的程式邏輯反過來即可。

unicode html 轉回文字,由於 php 沒有 hex2bin 的函式,所以我們自己簡單的寫一個來用。
1. 2. function hex2bin($string)
3. {
4. $len = strlen($string);
5. retunr pack("H".$len, $string);
6. }
7.
8. $str = "28201";
9. $unicodeHtml = iconv("ucs-2", "utf-8", hex2bin(base_convert($str, 10, 16)));
10.
11. print $unicodeHtml;
12. ?>
13. // 顯示結果
14.
15. 温

這就是將 unicode html 轉回文字的方式。

以上,希望對於要處理 unicode html 的人有所幫助。

ref:http://hinablue.blogspot.com/2008/01/php-tech-unicode-html-convert.html

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/640706/viewspace-1018388/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2005-10-15

  • 博文量
    152
  • 访问量
    120727