加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中用编码代码,编码对照表的使用(2)_php

发布时间:2022-09-27 15:29:17 所属栏目:PHP教程 来源:
导读:  /**

  * 本程序用于从编码对照表装入简繁编码,利用序列化来缩短装入时间

  * 同时提供两个繁简转换函数

  * 使用方法:

  * 在需要的程序中加入

  编码对照表的使用(2)_php
  /**
 
  * 本程序用于从编码对照表装入简繁编码,利用序列化来缩短装入时间
 
  * 同时提供两个繁简转换函数
 
  * 使用方法:
 
  * 在需要的程序中加入
 
  编码对照表的使用(2)_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
 
  if(ord($s[$i]) > 0x7f) {
 
  $p = sprintf("XX",$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");
 
  }
 
  测试例:
 
  require_once "load_gb_big5.php";
 
  setchar("big5");
 
  echo getchar('
 
  最近完成了gbk、gb2312、big5的编码对照表(含其汉语拼音)的整理
 
  现以文本文件方式提供给大家php编码,压缩包297k
 
  其中:(均包括符号)
 
  gbk21791
 
  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建表代码(请按实际情况修改):
 
  ');
 
  欢迎大家阅读《编码对照表的使用(2)_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!