編碼對(duì)比表的使用(2)
發(fā)表時(shí)間:2023-07-27 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]<?php/** * 本程序用于從編碼對(duì)照表裝入簡(jiǎn)繁編碼,利用序列化來(lái)縮短裝入時(shí)間 * 同時(shí)提供兩個(gè)繁簡(jiǎn)轉(zhuǎn)換函數(shù) * 使用方法: * 在需要的程序中加入 * require_once &quo...
<?php
/**
* 本程序用于從編碼對(duì)照表裝入簡(jiǎn)繁編碼,利用序列化來(lái)縮短裝入時(shí)間
* 同時(shí)提供兩個(gè)繁簡(jiǎn)轉(zhuǎn)換函數(shù)
* 使用方法:
* 在需要的程序中加入
* require_once "load_gb_big5.php";
* setchar(["big5"]);
*/
$filename = "gb_big5.txt";
if(!file_exists($filename)) {
/**
* 連接并打開(kāi)對(duì)照表
*/
$conn = mysql_connect();
mysql_select_db("unicode");
/**
* 提取其中big5和gbk編碼,表中big5只有13487個(gè)(包括符號(hào))
*/
$sql = "select gbk,big5,gb2312 from unicode where big5 != ''";
$rs = mysql_query($sql);
/**
* 讀取數(shù)據(jù)到數(shù)組,注意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);
}
/**
* 將輸入串轉(zhuǎn)換成相應(yīng)編碼
*/
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;
}
/**
* 設(shè)定轉(zhuǎn)換類(lèi)型并輸出頭
* 此函數(shù)前不能有其他輸出
*/
function setchar($char="gb2312") {
global $code;
if($char != "gb2312" && $char != "big5")
die("字符編碼類(lèi)型錯(cuò)!!!");
if($code[0] != $char)
$code = array_flip($code);// 若不是指定的編碼類(lèi)型,則交換鍵
header("Content-type: text/html; charset=$char");
}
?>
測(cè)試?yán)?br><?php
require_once "load_gb_big5.php";
setchar("big5");
echo getchar('
最近完成了gbk、gb2312、big5的編碼對(duì)照表(含其漢語(yǔ)拼音)的整理
現(xiàn)以文本文件方式提供給大家,壓縮包297k
其中:(均包括符號(hào))
gbk21791
big5 15863
gb2312 7478
注意數(shù)據(jù)行的",",在mysql下必須要有,否則可能出錯(cuò)。有的朋友拿到的新版可能沒(méi)有,請(qǐng)自行加上。
(2002-10-24)
有興趣的朋友請(qǐng)與我聯(lián)系,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建表代碼(請(qǐng)按實(shí)際情況修改):
');
?>