本文章來給大家介紹php反中文漢字轉Unicode編碼實現程序方法,有需要了解的朋友可進入參考。
程序
代碼如下 復制代碼/**
* $str 原始字符串
* $encoding 原始字符串的編碼,默認GBK
* $prefix 編碼後的前綴,默認"&#"
* $postfix 編碼後的後綴,默認";"
*/
function unicode_encode($str, $encoding = 'GBK', $prefix = '&#', $postfix = ';') {
$str = iconv($encoding, 'UCS-2', $str);
$arrstr = str_split($str, 2);
$unistr = '';
for($i = 0, $len = count($arrstr); $i < $len; $i++) {
$dec = hexdec(bin2hex($arrstr[$i]));
$unistr .= $prefix . $dec . $postfix;
}
return $unistr;
}
/**
* $str Unicode編碼後的字符串
* $encoding 原始字符串的編碼,默認GBK
* $prefix 編碼字符串的前綴,默認"&#"
* $postfix 編碼字符串的後綴,默認";"
*/
function unicode_decode($unistr, $encoding = 'GBK', $prefix = '&#', $postfix = ';') {
$arruni = explode($prefix, $unistr);
$unistr = '';
for($i = 1, $len = count($arruni); $i < $len; $i++) {
if (strlen($postfix) > 0) {
$arruni[$i] = substr($arruni[$i], 0, strlen($arruni[$i]) - strlen($postfix));
}
$temp = intval($arruni[$i]);
$unistr .= ($temp < 256) ? chr(0) . chr($temp) : chr($temp / 256) . chr($temp % 256);
}
return iconv('UCS-2', $encoding, $unistr);
}
使用范例:
代碼如下 復制代碼//GBK字符串測試
$str = '<b>哈哈</b>';
echo $str.'<br />';
$unistr = unicode_encode($str);
echo $unistr.'<br />'; // <b>哈哈</b>
$str2 = unicode_decode($unistr);
echo $str2.'<br />'; //<b>哈哈</b>
//UTF-8字符串測試
$utf8_str = iconv('GBK', 'UTF-8', $str);
echo $utf8_str.'<br />'; // <b>????</b> 注:UTF在GBK下顯示的亂碼!可切換浏覽器的編碼測試
$utf8_unistr = unicode_encode($utf8_str, 'UTF-8');
echo $utf8_unistr.'<br />'; // <b>哈哈</b>
$utf8_str2 = unicode_decode($utf8_unistr, 'UTF-8');
echo $utf8_str2.'<br />'; // <b>????</b>
//其它後綴、前綴測試
$prefix_unistr = unicode_encode($str, 'GBK', "\u", '');
echo $prefix_unistr.'<br />'; // u60u98u62u21704u21704u60u47u98u62
$profix_unistr2 = unicode_decode($prefix_unistr, 'GBK', "\u", '');
echo $profix_unistr2.'<br />'; //<b>哈哈</b>