php將unicode編碼轉為utf-8方法

來源:互聯網
上載者:User

標籤:style   blog   code   http   ext   color   

介紹

在前端開發中,為了讓中文在不同的環境下都能很好的顯示,一般是將中文轉化為unicode格式,即\u4f60,比如:”你好啊”的 unicode編碼為”\u4f60\u597d\u554a”。

JS裡將中文轉為unicode編碼很簡單。

function convert2Unicode(str) {return str.replace(/[\u0080-\uffff]/g,function($0) {var tmp = $0.charCodeAt(0).toString(16);return "\u" + new Array(5 - tmp.length).join(‘0‘) + tmp;});}

並且也很簡單,直接alert出來或者innerHTML到dom節點裡都可以。

但如果將\u4f60\u597d\u554a”字元傳遞給php,php就不能直接echo或者其他動作了。直接echo的話還是原生的字元,不 能自動轉化為中文。

?

php將unicode轉為utf-8方法

在php5.0及以上版本中提供了json_encode, json_decode方法。在使用json_encode變數的時候,如果變數裡含有中文的話,會將中文轉為unicode格式。所以在想是否可以通過 json_decode將unicode轉為中文呢?實際測試發現是可以的,但對單一的字串發現有些問題。

對於簡單的字串,發現有時候使用json_decode轉的化,結果直接為空白了。但將字串替換為數組然後在轉就可以了。下面就有了下面封裝的代 碼。

function unicode2utf8($str){        if(!$str) return $str;        $decode = json_decode($str);        if($decode) return $decode;        $str = ‘["‘ . $str . ‘"]‘;        $decode = json_decode($str);        if(count($decode) == 1){                return $decode[0];        }        return $str;}

使用這個方法可以很好的將unicode編碼轉為utf-8編碼。

附上js轉為實體字元和php將實體字元轉為漢字的方法

js將漢字轉為實體字元:

function convert2Entity(str) {var len = str.length;var re = [];for (var i = 0; i < len; i++) { var code = str.charCodeAt(i); if (code > 256) {re.push(‘&#‘ + code + ‘;‘);} else {re.push(str.charAt(i));}}return re.join(‘‘);}

php將實體字元轉為utf-8漢字的方法:

function entity2utf8onechar($unicode_c){$unicode_c_val = intval($unicode_c);$f=0x80; // 10000000$str = "";// U-00000000 - U-0000007F:   0xxxxxxxif($unicode_c_val <= 0x7F){ $str = chr($unicode_c_val); } //U-00000080 - U-000007FF:  110xxxxx 10xxxxxx else if($unicode_c_val >= 0x80 && $unicode_c_val <= 0x7FF){ $h=0xC0; // 11000000 $c1 = $unicode_c_val >> 6 | $h;$c2 = ($unicode_c_val & 0x3F) | $f;$str = chr($c1).chr($c2);}//U-00000800 - U-0000FFFF:  1110xxxx 10xxxxxx 10xxxxxxelse if($unicode_c_val >= 0x800 && $unicode_c_val <= 0xFFFF){ $h=0xE0; // 11100000 $c1 = $unicode_c_val >> 12 | $h;$c2 = (($unicode_c_val & 0xFC0) >> 6) | $f;$c3 = ($unicode_c_val & 0x3F) | $f;$str=chr($c1).chr($c2).chr($c3);}//U-00010000 - U-001FFFFF:  11110xxx 10xxxxxx 10xxxxxx 10xxxxxxelse if($unicode_c_val >= 0x10000 && $unicode_c_val <= 0x1FFFFF){ $h=0xF0; // 11110000 $c1 = $unicode_c_val >> 18 | $h;$c2 = (($unicode_c_val & 0x3F000) >>12) | $f;$c3 = (($unicode_c_val & 0xFC0) >>6) | $f;$c4 = ($unicode_c_val & 0x3F) | $f;$str = chr($c1).chr($c2).chr($c3).chr($c4);}//U-00200000 - U-03FFFFFF:  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxxelse if($unicode_c_val >= 0x200000 && $unicode_c_val <= 0x3FFFFFF){ $h=0xF8; // 11111000 $c1 = $unicode_c_val >> 24 | $h;$c2 = (($unicode_c_val & 0xFC0000)>>18) | $f;$c3 = (($unicode_c_val & 0x3F000) >>12) | $f;$c4 = (($unicode_c_val & 0xFC0) >>6) | $f;$c5 = ($unicode_c_val & 0x3F) | $f;$str = chr($c1).chr($c2).chr($c3).chr($c4).chr($c5);}//U-04000000 - U-7FFFFFFF:  1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxxelse if($unicode_c_val >= 0x4000000 && $unicode_c_val <= 0x7FFFFFFF){ $h=0xFC; // 11111100 $c1 = $unicode_c_val >> 30 | $h;$c2 = (($unicode_c_val & 0x3F000000)>>24) | $f;$c3 = (($unicode_c_val & 0xFC0000)>>18) | $f;$c4 = (($unicode_c_val & 0x3F000) >>12) | $f;$c5 = (($unicode_c_val & 0xFC0) >>6) | $f;$c6 = ($unicode_c_val & 0x3F) | $f;$str = chr($c1).chr($c2).chr($c3).chr($c4).chr($c5).chr($c6);}return $str;}function entities2utf8($unicode_c){$unicode_c = preg_replace("/\&\#([\da-f]{5})\;/es", "entity2utf8onechar(‘\\1‘)", $unicode_c);return $unicode_c;}

entity2utf8onechar方法來自http://blog.sina.com.cn/s /blog_48d7f3f40100o6ak.html

使用方式:

$utf8chars = entities2utf8("啊你好啊");

?

轉自:http://www.welefen.com/php-unicode-to-utf8.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.