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

/**

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

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

* 使用方法:

* 在需要的程序中加入

http://www.gaodaima.com/45612.html编码对照表的使用(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("%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");

}

?>

测试例:

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建表代码(请按实际情况修改):

');

?>

欢迎大家阅读《编码对照表的使用(2)_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

原创文章,转载请注明: 转载自搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值