php的汉字转换: GBK->Big5

汉字|转换

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<strlen($gb);$i++){
   if(($p=ord(substr($gb,$i,1)))>127){
    $q=ord(substr($gb,++$i,1));
    $tmp=$this->qswhData[$p-128];
    for($j=0;$j<strlen($tmp);$j+=6)if(($k=hexdec(substr($tmp,$j,2)))>=$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("<xmp>请选择编码Big5查看:".$qswh->qswhStr($words));
echo("\n编码一目录:".$qswh->qswhDir("test"));
echo("\n编码一文件:".$qswh->qswhFile("index.htm"));

使用说明:
qswhStr中第二个参数代表如果没有对应的Big5将替换的字,如果为空,则保留该字
将文件格式化后,记得要修改<meta中的content-type为Big。

 

时间: 2024-08-18 10:52:10

php的汉字转换: GBK-&gt;Big5的相关文章

php的汉字转换:GBK至Big5

P>php的汉字转换一直是比较麻烦的事首先要说两点:1.GBK的繁体字并不是Big5,但一般繁体字都有对应的Big码2.一GBK码并不一定有对应的Big5码,所以一般是不可逆转换该类内置了三个函数qswhStr 格式化字符串qswhFile 格式化一文件qswhDir 格式化目录下所有文件(.qswh的除外,那是原先文档的备份)qswhBig5.php 从这里下载/user/qswh/qswhBig5.zip<?class qswhBig5{ var $qswhData; function q

php的汉字转换: Unicode(UTF8)-&amp;gt;GBK

汉字|转换 秋水无恨 GBK Unicode UTF8 汉字 转换 php的汉字转换一直是比较麻烦的事 该类内置了四个过滤"[dec];","[hex];","%u[hex]","utf8转换"方便用户的使用,同时也可自定义过滤进行自己喜欢的操作 qswhU.php 从这里下载http://www.blueidea.com/user/qswh/qswhU.zip class qswhU{ var $qswhData; func

php从Unicode(UTF8)-&amp;gt;GBK的汉字转换

php的汉字转换一直是比较麻烦的事 该类内置了四个过滤"&#[dec];","&#x[hex];","%u[hex]","utf8转换" 方便用户的使用,同时也可自定义过滤进行自己喜欢的操作 qswhU.php 从这里下载 http://www.blueidea.com/user/qswh/qswhU.zip class qswhU{ var $qswhData; function qswhU($filenam

php的汉字转换:GBK至Unicode(UTF8)

php的汉字转换一直是比较麻烦的事 该类内置了四个函数"htmlHex","htmlDec","escape","u2utf8" 方便用户的使用,同时也可自定义函数进行自己喜欢的操作 qswhGBK.php 从这里下载 /user/qswh/qswhGBK.zip

unicode编码转换:PHP将汉字转换成Unicode编码的函数

这是一个将汉字转换成Unicode编码的PHP函数,支持GBK和UTF8编码.function uni_decode ($uncode){$word = json_decode(preg_replace_callback('/(\d{5});/', create_function('$dec', 'return \'\\u\'.dechex($dec[1]);'), '"'.$uncode.'"'));return $word;}对 Unicode 转换为汉字function uni_

谈汉字转换类型及解决方案

●简繁转换有四种情况 汉字转换,分为内码转换和简繁转换. 内码转换属于简繁转换,但是他主要是在GB码和BIG5码之间转换. 另外一种简繁转换是在GB码内部的转换.GB码扩展集包含两万多个汉字,自然也存在简繁转化问题.例如,大陆网友从BIG5码繁体字网页用"复制--粘贴"的方法虽然得到的是繁体字文件,但他已经不是BIG5码的字体了.尽管页面的内码是BIG5码,但是经过复制--粘贴,已经变成了GB内码的繁体字,粘贴到"笔记本"时不是乱码,要知道,大陆简体windows系

Mysql中文汉字转拼音的实现(每个汉字转换全拼)_Mysql

一.创建拼音对照表 复制代码 代码如下: -- 创建汉字拼音对照临时表CREATE TABLE IF NOT EXISTS `t_base_pinyin` (  `pin_yin_` varchar(255) CHARACTER SET gbk NOT NULL,  `code_` int(11) NOT NULL,  PRIMARY KEY (`code_`)) ENGINE=InnoDB DEFAULT CHARSET=latin1; 二.插入对照数据 复制代码 代码如下: -- 插入数据I

汉字转换成Unicode编码PHP程序

汉字转换成unicode方法  代码如下 复制代码 <?php //将utf8编码的汉字转换为unicode function htou($c){  $n = (ord($c[0]) & 0x1f) << 12;  $n = (ord($c[1]) & 0x3f) << 6;  $n = ord($c[2]) & 0x3f;  return $n; } //在代码中隐藏utf8格式的字符串 function my_utf8_unicode($str)

ASP写的汉字转换UTF-8及UTF-8转GB2312

汉字|转换 汉字转换为UTF-8 function chinese2unicode(Str)   dim i   dim Str_one   dim Str_unicode   for i=1 to len(Str)     Str_one=Mid(Str,i,1)     Str_unicode=Str_unicode&chr(38)     Str_unicode=Str_unicode&chr(35)     Str_unicode=Str_unicode&chr(120)