NewsRhzhi | 先创资讯 | 旧版入口
rhzhi.net
网站首页 | NewsRhzhi | 先创资讯 | 操作系统 | 工具软件 | 办公软件 | 网站设计 | 组网专栏 | 平面设计 | 多 媒 体 | 程序开发 | 硬件资料 | 聊天软件
您现在的位置: 先创网 >> 程序开发 >> PHP >> 文章正文
编码对照表的使用(2)
网络文摘
2005-3-14文/佚名
    

<?php
/**
* 本程序用于从编码对照表装入简繁编码,利用序列化来缩短装入时间
* 同时提供两个繁简转换函数
* 使用方法:
* 在需要的程序中加入
* require_once "load_gb_big5.php";
* setchar(["big5"]);
*/

$filename = "gb_big5.txt";
if(!file_exists($filename)) {
  /**
   * 连接并打开对照表
   */
  $conn = mysql_connect();
  mysql_select_db("unicode");
  /**
   * 提取其中big5和gbk编码,表中big5只有13487个(包括符号)
   */
  $sql = "select gbk,big5,gb2312 from unicode where big5 != ''";
  $rs = mysql_query($sql);
  /**
   * 读取数据到数组,注意key和value的处理
   */
  $code = array(0=>"big5",gb2312=>0);

  while($row = mysql_fetch_array($rs)) {
    $code[pack("H4",$row][gbk])] = pack("H4",$row[big5]);
  }
  mysql_close($conn);
  $fp = fopen($filename,"w");
  fwrite($fp,serialize($code));
  fclose($fp);
}else {
  $fp = fopen($filename,"r");
  $code = unserialize(fread($fp,filesize($filename)));
  fclose($fp);
}

/**
* 将输入串转换成相应编码
*/
function getchar($s) {
  global $code;
  $v = "";
  for($i=0;$i<strlen($s);$i++) {
    if(ord($s[$i]) > 0x7f) {
      $p = sprintf("%02X%02X",$s[$i],$s[$i+1]);
      $p = $s[$i].$s[$i+1];
      $ch = $code[$p];
      if($ch == "")
        $ch = $s[$i].$s[$i+1];
      $v .= $ch;
      $i++;
    }else
      $v .= $s[$i];
  }
  return $v;
}

/**
* 设定转换类型并输出头
* 此函数前不能有其他输出
*/
function setchar($char="gb2312") {
  global $code;
  if($char != "gb2312" && $char != "big5")
    die("字符编码类型错!!!");
  if($code[0] != $char)
    $code = array_flip($code);  // 若不是指定的编码类型,则交换键
  header("Content-type: text/html; charset=$char");
}

?>
测试例:
<?php
require_once "load_gb_big5.php";
setchar("big5");

echo getchar('
最近完成了gbk、gb2312、big5的编码对照表(含其汉语拼音)的整理
现以文本文件方式提供给大家,压缩包297k
其中:(均包括符号)
gbk  21791
big5 15863
gb2312 7478
注意数据行的",",在mysql下必须要有,否则可能出错。有的朋友拿到的新版可能没有,请自行加上。
(2002-10-24)
有兴趣的朋友请与我联系,email:czjsz_ah@stats.gov.cn

文档格式:
"B6F6","","B6F6","997F","饿","e",
"B6F7","AEA6","B6F7","6069","恩","en",
"B6F8","A6D3","B6F8","800C","而","er|neng",
"B6F9","A449","B6F9","513F","儿","er|ren",
顺次为:gbk、big5、gb2312、unicode、字模、拼音

mysql建表代码(请按实际情况修改):
');
?>

打印此页 投稿与建议 返回顶部
栏 目 索 引
软件应用 SOFTWARE
Win XP | NT/2003
Win2000 | DOS/Win9x
PowerPoint | Office
Excel | Word
网络软件 | 实用软件
媒体软件 | 系统软件
常用软件 | 办公软件
聊天软件 | 网络安全
新软试用 | Vista
设计在线 DESIGN
Dreamweaver | 3DMax
Photoshop | Flash
平面设计 | 网页设计
多 媒 体 | 精品画廊
精彩专区 SPECIAL
Q Q 专区 | 热门专题
组网玩网 | 程序开发
应用集锦 |

没有任何图片文章
相关文章
关于我们 - 联系方式 - 合作伙伴 - 网站大事记 - 网站地图 - 我要投稿
Copyright ©1997-2008 先创网 All Rights Reserved.
先创科技 版权所有