溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP如何解碼unicode編碼的中文字符代碼

發(fā)布時(shí)間:2021-06-30 15:43:49 來(lái)源:億速云 閱讀:215 作者:chen 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“PHP如何解碼unicode編碼的中文字符代碼”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“PHP如何解碼unicode編碼的中文字符代碼”吧!

問(wèn)題背景:
晚上在抓取某網(wǎng)站數(shù)據(jù),結(jié)果在數(shù)據(jù)包中發(fā)現(xiàn)了這么一串編碼的數(shù)據(jù):"......\u65b0\u6d6a\u5fae\u535a......", 這其實(shí)是中文被unicode編碼后了的數(shù)據(jù),我現(xiàn)在就是想解碼出中文來(lái),上度娘搞了半天,試了很多的姿(方)勢(shì)(法),終于搞定了。

解決方案:
呵呵,老外就是給力啊, 猛戳這里看老外給的解決方案

方案A(穩(wěn)定版+推薦):

function replace_unicode_escape_sequence($match) {
  return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}
$name = '\u65b0\u6d6a\u5fae\u535a';
$str = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $name);
echo $str; //輸出: 新浪微博
//咱將上述方案A給封裝起來(lái)~~~(方案A穩(wěn)定版+升級(jí)+推薦)
class Helper_Tool
{
  static function unicodeDecode($data)
  {  
    function replace_unicode_escape_sequence($match) {
      return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
    }  
 
    $rs = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $data);
 
    return $rs;
  }  
}
//調(diào)用
$name = '\u65b0\u6d6a\u5fae\u535a';
$data = Helper_Tool::unicodeDecode($name); //輸出新浪微博

 
方案B(次推薦):

<?php
function unicodeDecode($name){
  $json = '{"str":"'.$name.'"}';
  $arr = json_decode($json,true);
  if(empty($arr)) return ''; 
  return $arr['str'];
}
$name = '\u65b0\u6d6a\u5fae\u535a';
echo unicodeDecode($name); //輸出: 新浪微博

對(duì)于方案B, 我要特別重點(diǎn)說(shuō)明下注意事項(xiàng), 在好友 XAR (猛戳XAR博客) 的技術(shù)支持下,總結(jié)出要處理的字符串(即傳遞給函數(shù)unicodeDecode的參數(shù)$name的內(nèi)容中一定不能包含單引號(hào),否則就會(huì)導(dǎo)致解析失敗, 所以有必要的話可以借助 str_replace()函數(shù)將非法字符格式化為合格字符)

到此,相信大家對(duì)“PHP如何解碼unicode編碼的中文字符代碼”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI