Home >Backend Development >PHP Tutorial >Chinese character conversion in php: Unicode (UTF8) to GBK

Chinese character conversion in php: Unicode (UTF8) to GBK

高洛峰
高洛峰Original
2016-12-02 10:13:331189browse

PHP Chinese character conversion has always been a troublesome thing

This class has four built-in filters "[dec];", "[hex];", "%u[hex]", "utf8 conversion "
It is convenient for users to use, and you can also customize filtering to perform your favorite operations


qswhU.php Download from here
http://www.blueidea.com/user/qswh/qswhU.zip

class qswhU{
var $qswhData;
function qswhU($filename="qswhU.php"){
$this->qswhData=file($filename);
}

function decode($str,$pattern=0){
$arr=array("/(w+);/iU","/((%ww)+)/i","/%u(w{4,5})/iU");
if( is_integer($pattern)){
if($pattern>=count($arr))die("Invalid Function");
$pattern=$arr[$pattern];
}
return preg_replace_callback($pattern,array( $this,"u2gb"),$str);
}

function u2gb($arr){
/******(qiushuiwuhen 2002-8-15)******/
$ret="";$str=$arr[1];
if (preg_match_all("/%w{2}/",$str,$matches)){
for($i=0;$i $chr1=hexdec (substr($matches[0][$i],1));
$arr=array("f0","e0","c0","0");
for($j=0;$j< ;count($arr);$j++)if($chr1>hexdec($arr[$j]))break;
$chr=hexdec(substr($matches[0][$i],1))-hexdec ($arr[$j]);
while(++$j $str=dechex($chr);
if(strlen($str)==4){
$p=hexdec(substr($str,0,2))-0x4d;
$q= hexdec(substr($str,2))*4;
$ret.=chr(hexdec(substr($this->qswhData[$p],$q,2)));
$ret.=chr( hexdec(substr($this->qswhData[$p],$q+2,2)));
}else
  $ret.=chr(hexdec($str));
}
}
else{
if(strtolower($str[0])=="x")
$str=substr($str,1);
else
if(strlen($str)!=4)$str=dechex($str) ;

if(strlen($str)==4){
$p=hexdec(substr($str,0,2))-0x4d;
$q=hexdec(substr($str,2))*4 ;
$ret.=chr(hexdec(substr($this->qswhData[$p],$q,2)));
$ret.=chr(hexdec(substr($this->qswhData[$ p],$q+2,2)));
}else
$ret.=chr(hexdec($str));
}
return $ret;
}


}


Usage example

$qswh=new qswhU("qswhU.php");//If the file name is qswhU.php, parameters can be omitted
echo "

Without parameters (default filtering is: [num];):" ;<br>echo "n".$qswh->decode("中文Abc");<br>echo "n".$qswh->decode ("中文Abc");<br>echo "nCall built-in filtering (UTF transcoding):".$qswh->decode("%E4 %B8%AD%E6%96%87%20!%22%23%24%25%26'()*%2B%2C%2F%3A%3B%3C%3D%3E%3F%40%5B% 5D%5E%60%7B%7C%7D~%25Abc",1);<br>echo "nCall the built-in filter unescape(%u[num]):".$qswh->decode("%u4E2D%u6587Abc" ,2);<br>echo "ncustom filter([x+num]):".$qswh->decode("[x4E2D][x6587][x41][x62][x63]","/[( w+)]/");</p> <p>The effect is as follows:<br>Without parameters (default filtering is: [num];):<br>Chinese Abc<br>Chinese Abc<br>Call the built-in filtering (UTF transcoding): Chinese!"#$ %&'()*+,/:;<=>?@[]^`{|}~%Abc<br>Call the built-in filter unescape(%u[num]): Chinese Abc<br>custom filter ([x +num]):Chinese Abc</p> <p><br></p></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>Statement:</span><div>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</div></div></div><div class="nphpSytBox"><span>Previous article:<a class="dBlack" title="Summary of commonly used special operation symbols and functions in PHP" href="https://m.php.cn/faq/342694.html">Summary of commonly used special operation symbols and functions in PHP</a></span><span>Next article:<a class="dBlack" title="Summary of commonly used special operation symbols and functions in PHP" href="https://m.php.cn/faq/342699.html">Summary of commonly used special operation symbols and functions in PHP</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>Related articles</h2><em><a href="https://m.php.cn/article.html" class="bBlack"><i>See more</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/2.html" title="All expression symbols in regular expressions (summary)" class="aBlack">All expression symbols in regular expressions (summary)</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>Public welfare online PHP training,Help PHP learners grow quickly!</p></div><div class="footermid"><a href="https://m.php.cn/about/us.html">About us</a><a href="https://m.php.cn/about/disclaimer.html">Disclaimer</a><a href="https://m.php.cn/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body><!-- Matomo --><script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '9']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script><!-- End Matomo Code --></html>