Home  >  Article  >  Backend Development  >  PHP anti-Chinese characters to Unicode encoding implementation program_PHP tutorial

PHP anti-Chinese characters to Unicode encoding implementation program_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 16:57:141032browse

This article will introduce to you the program method of converting Chinese characters into Unicode encoding in PHP. Friends who need to know more can refer to it.

Program

The code is as follows
 代码如下 复制代码

/**
 * $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);
}

Copy code

代码如下 复制代码

//GBK字符串测试
$str = '哈哈';
echo $str.'
';
 
$unistr = unicode_encode($str);
echo $unistr.'
'; // <b>哈哈</b>
 
$str2 = unicode_decode($unistr);
echo $str2.'
'; //哈哈
 
//UTF-8字符串测试
$utf8_str = iconv('GBK', 'UTF-8', $str);
echo $utf8_str.'
'; // ???? 注:UTF在GBK下显示的乱码!可切换浏览器的编码测试
 
$utf8_unistr = unicode_encode($utf8_str, 'UTF-8');
echo $utf8_unistr.'
'; // <b>哈哈</b>
 
$utf8_str2 = unicode_decode($utf8_unistr, 'UTF-8');
echo $utf8_str2.'
'; // ????
 
//其它后缀、前缀测试
$prefix_unistr = unicode_encode($str, 'GBK', "u", '');
echo $prefix_unistr.'
'; // u60u98u62u21704u21704u60u47u98u62
 
$profix_unistr2 = unicode_decode($prefix_unistr, 'GBK', "u", '');
echo $profix_unistr2.'
'; //哈哈

/**
* $str original string
* $encoding The encoding of the original string, the default is GBK
* $prefix encoded prefix, default ""
* $postfix encoded suffix, default ";"
​*/
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 encoded string
* $encoding The encoding of the original string, the default is GBK
* $prefix The prefix of the encoded string, the default is "&#"
* $postfix suffix of the encoded string, default ";"
​*/
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);
}
Usage example:
The code is as follows Copy code
//GBK string test
$str = 'Haha';
echo $str.'
';

$unistr = unicode_encode($str);
echo $unistr.'
'; // 哈哈 ;

$str2 = unicode_decode($unistr);
echo $str2.'
'; //Haha

//UTF-8 string test
$utf8_str = iconv('GBK', 'UTF-8', $str);
echo $utf8_str.'
'; // ???? Note: UTF is displayed as garbled code under GBK! Coding testing for switchable browsers

$utf8_unistr = unicode_encode($utf8_str, 'UTF-8');
echo $utf8_unistr.'
'; // 哈哈 ;

$utf8_str2 = unicode_decode($utf8_unistr, 'UTF-8');
echo $utf8_str2.'
'; // ????

//Other suffix and prefix tests
$prefix_unistr = unicode_encode($str, 'GBK', "u", '');
echo $prefix_unistr.'
'; // u60u98u62u21704u21704u60u47u98u62

$profix_unistr2 = unicode_decode($prefix_unistr, 'GBK', "u", '');
echo $profix_unistr2.'
'; //Haha

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/631560.htmlTechArticleThis article will introduce to you the program method of converting Chinese characters into Unicode encoding in PHP. Friends who need to know more can enter refer to. The program code is as follows Copy code /** * $str original string...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn