<?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","而","erneng",
"b6f9","a449","b6f9","513f","儿","erren",
顺次为:gbk、big5、gb2312、unicode、字模、拼音
mysql建表代码(请按实际情况修改):
');
?>
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器