php专区

 首页 > php专区 > PHP进阶 > 网络编程 > php的汉字转换:GBK至Big5

php的汉字转换:GBK至Big5

分享到:
【字体:
导读:
         摘要:Pphp的汉字转换一直是比较麻烦的事首先要说两点:1.GBK的繁体字并不是Big5,但一般繁体字都有对应的Big码2.一GBK码并不一定有对应的Big5码,所以一般是不可逆转换该类内置了三个函数qswhStr格式化字符串qswhFile格式化一文件qswhDir格式化目录下所有文件(.q...

php的汉字转换:GBK至Big5

P>php的汉字转换一直是比较麻烦的事

首先要说两点:
1.GBK的繁体字并不是Big5,但一般繁体字都有对应的Big码
2.一GBK码并不一定有对应的Big5码,所以一般是不可逆转换

该类内置了三个函数
qswhStr 格式化字符串
qswhFile 格式化一文件
qswhDir 格式化目录下所有文件(.qswh的除外,那是原先文档的备份)

qswhBig5.php 从这里下载
http://www.blueidea.com/user/qswh/qswhBig5.zip

class qswhBig5{
 var $qswhData;
 function qswhBig5($filename="qswhBig5.php"){
  $this->qswhData=file($filename);
 }
 function qswhStr($gb,$fail="??"){
  /******(qiushuiwuhen 2002-9-6)******/
  $ret="";
  for($i=0;$i   if(($p=ord(substr($gb,$i,1)))>127){
    $q=ord(substr($gb,++$i,1));
    $tmp=$this->qswhData[$p-128];
    for($j=0;$j=$q)break;
    if($k==$q)$q=chr(hexdec(substr($tmp,$j+2,2))).chr(hexdec(substr($tmp,$j+4,2)));
    else if($fail=="")$q=chr($p).chr($q); else $q=$fail;
   }
   else
    $q=chr($p);
   $ret.=$q;
  }
  return $ret;
 }
 function qswhFile($filename,$fail="??"){
  /******(qiushuiwuhen 2002-9-6)******/
  if(!file_exists($filename.".qswh"))copy($filename,$filename.".qswh");
  $fp=fopen($filename,"r+");
  $tmp=fread($fp,filesize($filename));
  rewind($fp);
  fwrite($fp,$this->qswhStr($tmp,$fail));
  fclose($fp);
 }
 
 function qswhDir($dirname,$fail="??"){
  /******(qiushuiwuhen 2002-9-6)******/
  $d = dir($dirname);
  while($entry=$d->read()) {
   if($entry=="."||$entry=="..")continue;
   $entry=$dirname."/".$entry;
   if(is_dir($entry))
       $this->qswhDir($entry,$fail);
      else{
       if(substr($entry,-5)!=".qswh")$this->qswhFile($entry,$fail);
      }
  }
  $d->close();
  return $c;
 }
 
}


使用范例:
$words="秋水无恨";
$qswh=new qswhBig5("qswhBig5.php");//qswhBig5.php,可省参数

echo("

请选择编码Big5查看:".$qswh->qswhStr($words));<br>echo("n编码一目录:".$qswh->qswhDir("test"));<br>echo("n编码一文件:".$qswh->qswhFile("index.htm"));</p> <p><br>使用说明:<br>qswhStr中第二个参数代表如果没有对应的Big5将替换的字,如果为空,则保留该字<br>将文件格式化后,记得要修改<meta中的content-type为Big。</p> php的汉字转换:GBK至Big5<br> <div class="clearfix divider_dashed333"></div> <div class="lh24 f12 mt20 bb1e pb20"> <div class="fr" style=" padding-right: 20px"> <ul class="paginationa my_ajax"> <li id="fav_Rn49A2dQo5L0e8G_bottom"><a href="javascript:;" class="arfav" data-info_id="Rn49A2dQo5L0e8G" data-info_title="php的汉字转换:GBK至Big5" data-info_num="11">收藏(<span id="ar_fav">5</span>)</a></li> <li id="zan_Rn49A2dQo5L0e8G_bottom"><a href="javascript:;" class="arzan" data-info_id="Rn49A2dQo5L0e8G" data-info_title="php的汉字转换:GBK至Big5" data-info_num="11">赞(<span id="ar_zan">71</span>)</a></li> <li id="bao_Rn49A2dQo5L0e8G_bottom"><a href="javascript:;" class="arbao" data-info_id="Rn49A2dQo5L0e8G" data-info_title="php的汉字转换:GBK至Big5" data-info_num="11">举报</a></li> </ul> </div> <span class="f12 blue_lighten mr10 fr" style="width: 200px;"> <span class="lh24 f12 c9 fl">分享到:</span> <div class="bdsharebuttonbox bdshare_t bds_tools get-codes-bdshare fl"><a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a><a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a><a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博"></a><a href="#" class="bds_renren" data-cmd="renren" title="分享到人人网"></a><a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a><a href="#" class="bds_more" data-cmd="more"></a></div> </span> </div> <div class="clearfix divider_dashed333"></div> </div> <div class="clearfix"></div> <div style="padding:0px 20px;"> <div class="one_half"> <div class="about_author"> <a href="https://www.nbla.cn/index.php/article/_WQjyNMzy53qGmvl.html">正则表达式高级学习技巧</a> <br/> 正则表达式高级学习技巧前言  Regular Expressions(正则表达式,以下用RE称呼)对小弟来说一直都是神密的地带,看到一些网络上的大大,简单用RE就决解了某些文字的问题,小弟便兴起了学一学RE的想法,但小弟天生就比较懒一些,总希望看有没有些快速学习的方式,于是小弟又请出Google大神,藉由?的神力,小弟在网络上找到... </div> </div> <div class="one_half last"> <div class="about_author"> <a href="https://www.nbla.cn/index.php/article/_517nzqgjyWLXR4o.html">如何用PHP做到即时简繁切换</a> <br/> 如何用PHP做到即时简繁切换 看到满多网站都有即时简繁切换的功能,只是都不见有人提供做法,因 此我也写了一段转换程式,给有需要的人参考: 以下程式所用的table档是a4chinese的big5-gb.table,其版权为a4chinese作者所有;PHP程式码部分则可自由修改应用,唯不得出售营利..^^ 1.先取得big5-gb.table档,你可在文章下面的链接找到.... </div> </div> <div class="clearfix margin_top5"></div> <div class="one_half"> <div class="popular-posts-area"> <ul class="recent_posts_list"> <li><a href="https://www.nbla.cn/index.php/article/_mXYZw2eJaxLkzWE.html">PHP中使用DBM作为数据库(包括排序)</a> <i>Dec 26, 2016</i> </li><li><a href="https://www.nbla.cn/index.php/article/_lkz8Q2wn5RMyVGR.html">用封装类来合理的设计PHP项目--谈PHP项目中类的封装</a> <i>Dec 25, 2016</i> </li><li><a href="https://www.nbla.cn/index.php/article/_7KOPa2pjXjqAryz.html">php生成SessionID和图片校验码的思路和实现</a> <i>Jan 13, 2017</i> </li><li><a href="https://www.nbla.cn/index.php/article/_o6VBpMXz4NLQ0Yd.html">PHP中简单的页面缓冲技术</a> <i>Jan 14, 2017</i> </li> </ul> </div> </div> <div class="one_half last"> <div class="popular-posts-area"> <ul class="recent_posts_list"> <li><a href="https://www.nbla.cn/index.php/article/_WQjyNMzyX4qGmvl.html">聊天室技术(六)-- 表情和动作</a> <i>Jan 03, 2017</i> </li><li><a href="https://www.nbla.cn/index.php/article/_8NokZ2oaN4qBJlY.html">在PHP中将图片存放ORACLE中</a> <i>Dec 26, 2016</i> </li><li><a href="https://www.nbla.cn/index.php/article/_worJG2P5VJL6ZYO.html">简单的页面缓冲技术</a> <i>Dec 03, 2016</i> </li><li><a href="https://www.nbla.cn/index.php/article/_lkz8Q2wQvPqyVGR.html">python远程统计文件代码分享</a> <i>Dec 06, 2018</i> </li> </ul> </div> </div> </div> </div> </div> <div class="clearfix margin_top7"></div> <div class="footer1 bggraph1"> <div class="container"> <div class="one_fourth"> <ul class="faddress"> <li id="myfooter"> <div class="logo"><a href="http://www.nbla.cn" id="logo"><span></span></a></div> </li> <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。</li> <li>在这里……</li> </ul> </div> <div class="one_fourth"> <div class="ftags"> <h3 class="nocaps">Tags</h3> <ul> <li><a href="#">共同学习</a></li> <li><a href="#">发现</a></li> <li><a href="#"> 收藏</a></li> <li><a href="#"> 分享</a></li> <li><a href="#"> 共享</a></li> <li><a href="#">共鸣</a></li> <li><a href="#">专注</a></li> <li><a href="#">共同进步</a></li> </ul> </div> </div> <div class="one_fourth"> <div class="twitter_feed"> <h3 class="nocaps">About</h3> <div class="left"><i class="fa fa-twitter fa-lg"></i></div> <div class="right"> &nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:;" target="_blank">特别鸣谢</a>&nbsp;&nbsp;&nbsp;&nbsp; <a href="javascript:;" target="_blank">使用协议</a><br/><br/> &nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:;" target="_blank">意见反馈</a>&nbsp;&nbsp;&nbsp;&nbsp; <a href="javascript:;" target="_blank">网站投稿</a> </div> </div> </div> <div class="one_fourth last"> <!-- <h3 class="nocaps">We&nbsp;&nbsp;Group</h3> --> <img src="https://www.nbla.cn/Template/Home/images/php_wx.jpg" style="float:left;width: 110px; text-align: center;"> <img src="https://www.nbla.cn/Template/Home/images/php_xcx.jpg" style="float:left;width: 110px; text-align: center;margin-left: 20px"> </div> </div> </div> </div> <div class="clearfix"></div> <div class="copyright_info"> <div class="container"> <div> 网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱&nbsp;&nbsp;<a href="https://beian.miit.gov.cn" target="_blank">冀ICP备18013926号-2</a> </div> </div> </div> <a href="#" class="scrollup">Scroll</a> </div> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/universal/jquery.js"></script> <script src="https://www.nbla.cn/Template/Home/js/style-switcher/jquery-1.js"></script> <script src="https://www.nbla.cn/Template/Home/js/style-switcher/styleselector.js"></script> <script src="https://www.nbla.cn/Template/Home/js/mainmenu/bootstrap.min.js"></script> <script src="https://www.nbla.cn/Template/Home/js/scrolltotop/totop.js" type="text/javascript"></script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/mainmenu/sticky.js"></script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/mainmenu/modernizr.custom.75180.js"></script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/lightbox/jquery.fancybox.js"></script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/lightbox/custom.js"></script> <script src="https://www.nbla.cn/Template/Home/js/mainmenu/fhmm.js"></script> <script type="text/javascript"> $('.dropdown-toggle').dropdownHover().dropdown(); $(document).on('click', '.fhmm .dropdown-menu', function (e) { e.stopPropagation() }); </script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/customs.js"></script> <script src="https://www.nbla.cn/Template/Home/js/form/jquery.form.min.js"></script> <script> var baseUrl = 'https://www.nbla.cn/index.php/ajax/act'; </script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/custom.js"></script> </body> </html>