これは、簡体字中国語と繁体字中国語でパッケージ化されたクラスです。
さらに 2 つのテーブル ファイルが必要です。
1. http://www.jerry. com.tw/php/gb.map
プログラムは次のとおりです: CCharset.php3
/======================? == ============================
// プログラマー: Magic Jerry
//
// function Big5_Gb($str) = > ; 文字列の big5 を GB に変換
// 関数 Gb_Big5($str) => 文字列を Big5 に変換
//===================== = =============================
class CCharset {
var $gb_map="gb.map";他のパスに移動するには、完全なパスを追加します
var $big5_map="big5.map" //For example="/home/table/gb.map
var $dep_char = 127;
/ /--- ---------------------------------------------- ---- ------------
function cbig5_gb($str,$fd) {
$c=ord(substr($str,0,1)); (substr($ str,1,1));
$address=(($c-160)*510)+($x-1)*2; fgetc($fd);
$lo=fgetc($fd);
return "$hi$lo"
}
function cgb_big5($str,$fd) {
$c=ord($str, 0,1) );
$x=ord(substr($str,1,1));
$アドレス=(($c-160)*510)+($x-1)*2; $fd, $ アドレス);
$hi=fgetc($fd);
"$hi$lo" を返します
; ---------------------------------------------------- ---- ---
function Big5_Gb($str) {
$fd = fopen ($this->gb_map, "r");
$str=str_replace("charset=big5","charset=gb2312") , $str) ;
$outstr="";
for($i=0;$i
if( $ch > $this->dep_char) {
$outstr.=$this->cbig5_gb(substr($str,$i,2),$fd); else {
$ outstr.=substr($str,$i,1);
}
}
return $outstr;
//---------- ---------------------------------------------------- ----
function Gb_Big5($str) {
$fd = fopen ($this->big5_map, "r");
$str=str_replace("charset=gb2312","charset=big5", $str) );
$ outstr="";
for($i=0;$i
$outstr.=$this->cgb_big5(substr($str,$i,2),$fd); else {
$outstr.= substr($str,$i,1);
}
}
return $outstr;
}
?> ===== ============================================ ===== ======
使用例:
// デザイナー: Magic Jerry
//====文字列を直接変換する方法 ========
include("CCharset .php3");
$obj=new CCharset;
$tgb=$obj->
echo $tgb; /== => $tgb は変換された gb コード文字列
$tbig5=$obj->Gb_Big5($tgb); // 再度変換されます: big5
//==== = ===============================
?>
Web ページまたはファイル
// 構文 http://your.domain.com.tw/thisprogram.php3?http://変換する Web ページの URL またはファイル
// 例: QIMO ホームページを変換します
// http : //your.domain.com.tw/thisprogram.php3?http://www.kimo.com.tw/index.shtml
// 注: 次の記述方法が見つかった場合、Web ページは次のような Cookie を使用します。ユーザーを認証中、キックバックされる可能性があります。ログイン エラーです。
// 考えてみましょう... @_@
$file=$QUERY_STRING; ' ', file( "$file" ) );
$fcontents=str_replace("","
$gb=$code->Big5_Gb($fcontents);
例:
if($func=="charset") {
setcookie ("CHAR_GB",$GB,time()+ 31536000);
$url="http://".$HTTP_HOST.$PHP_SELF."?".$QUERY_STRING; url =str_replace("?func=charset&GB=1","", $url);
$url=str_replace("?func=charset&GB=0","", $url); = charset&GB=1","", $url);
$url=str_replace("&func=charset&GB=0","", $url);
//echo $url;
//echo "SET to Charset = $ CHAR_GB";
$t=time();
echo "
exit;
}
//phpinfo();
if($CHAR_GB==1 && !$istran ) {
include("CCharset.php3");
if(strlen($QUERY_STRING)) $url="http://".$HTTP_HOST.$PHP_SELF."?".$QUERY_STRING."&istran=1";
else $url="http://".$HTTP_HOST.$PHP_SELF."?istran=1";
while (list ($key, $val) = each ($HTTP_COOKIE_VARS)) {
//echo "$key => $val
";
$url.="&".$key."=".urlencode($val);
}
$fcontents = join( '', file( "$url" ) );
$code=新しいCCharset;
$fcontents=$code->Big5_Gb($fcontents);
//echo "轉換過的 $CHAR_GB";
$fcontents をエコー;
終了;
}
//} else setcookie("CHAR_GB",0,time()+ 31536000);
echo "