|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下。编码 <?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建表代码(请按实践情形修正):
');
?>
你的确对PHP有兴趣,那么选择教材也是很重要的。 |
|