<?php /** * 当制作好编码对照表后,并不能马上使用还需对其进行一些加工 * 当然简单的查表是可以的但效率不高 * 现在以繁简转换为例,说明对照表的使用 */
/** * 连接并打开对照表 */ $conn = mysql_connect(); mysql_select_db("unicode"); /** * 提取其中big5和gbk编码,表中big5只有13487个(包括符号) */ $sql = "select gbk,big5,gb2312 from unicode where big5 != ''"; //$sql = "select * from unicode"; $rs = mysql_query($sql); echo mysql_num_rows($rs)."<br>"; /** * 读取数据到数组,注意key和value的处理 */ $code = array(0=>"gb",big5=>0);
while($row = mysql_fetch_array($rs)) { $code[pack("H4",$row][gbk])] = pack("H4",$row[big5]); //$code[$row][gb2312]] = pack("H4",$row[big5]); }
mysql_close($conn);
function gb_big5($s) { global $code; $v = ""; if($code[0] == "big5") $code = $arr_flip($code); 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; } echo '<meta http-equiv="Content-Type" content="text/html; charset=big5">'; echo gb_big5(' 最近完成了gbk、gb2312、big5的编码对照表(含其汉语拼音)的整理 现以文本文件方式提供给大家,压缩包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 |