這是以class包裝好的簡繁體轉換的class, 
另外需要兩個table檔: 
1. http://www.jerry.com.tw/php/big5.map 
2. http://www.jerry.com.tw/php/gb.map 
程式如下: CCharset.php3

<? //===================================================== 
// 程式員: Magic Jerry 
// 
// function Big5_Gb($str) => big5轉GB for string 
// function Gb_Big5($str) => GB轉Big5 for string 
//===================================================== 
class CCharset {

var $gb_map="gb.map"; //如果要放到別的路徑,要加上完整路徑 
var $big5_map="big5.map"; //例如 ="/home/table/gb.map

var $dep_char = 127;

//----------------------------------------------------------------- 
function cbig5_gb($str,$fd) {

$c=ord(substr($str,0,1)); 
$x=ord(substr($str,1,1)); 
$address=(($c-160)*510)+($x-1)*2; 
fseek($fd, $address); 
$hi=fgetc($fd); 
$lo=fgetc($fd); 
return "$hi$lo"; 
}

function cgb_big5($str,$fd) { 
$c=ord(substr($str,0,1)); 
$x=ord(substr($str,1,1)); 
$address=(($c-160)*510)+($x-1)*2; 
fseek($fd, $address); 
$hi=fgetc($fd); 
$lo=fgetc($fd); 
return "$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<strlen($str);$i++) { 
$ch=ord(substr($str,$i,1)); 
if($ch > $this->dep_char) { 
$outstr.=$this->cbig5_gb(substr($str,$i,2),$fd); 
$i++;

} else { 
$outstr.=substr($str,$i,1); 
} 
} 
fclose ($fd); 
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<strlen($str);$i++) { 
$ch=ord(substr($str,$i,1)); 
if($ch > $this->dep_char) { 
$outstr.=$this->cgb_big5(substr($str,$i,2),$fd); 
$i++;

} else { 
$outstr.=substr($str,$i,1); 
} 
} 
fclose ($fd); 
return $outstr;

}

} 
?>

===================================================================
使用範例: 
<? 
// Designer: Magic Jerry

//====直接轉換文字串 的使用方法======== 
include("CCharset.php3"); 
$obj=new CCharset; 
$big5="這是一個big5的文字串"; 
$tgb=$obj->Big5_Gb($big5); 
echo $tgb; //===> $tgb為轉換好的gb碼字串 
$tbig5=$obj->Gb_Big5($tgb); 
echo $tbig5; // 又被轉回來了: big5 
//====================================== 
?>

<? 
//如果直接轉換網頁 或是檔案 
// 語法 http://your.domain.com.tw/這個程式.php3?http://要轉碼的網頁url或檔案 
// example: 轉換奇摩首頁 
// http://your.domain.com.tw/這個程式.php3?http://www.kimo.com.tw/index.shtml 
// 注意: 以下寫法如遇到該網頁有使用cookie,例如認證user,可能會被踢回,login錯誤.. 
// 為什麼? 想想看吧... @_@ 
include("CCharset.php3"); 
$file=$QUERY_STRING; 
$fcontents = join( '', file( "$file" ) ); 
$fcontents=str_replace("<head>","<head><base href=$file>", $fcontents); 
$code=new CCharset; 
$gb=$code->Big5_Gb($fcontents); 
echo $gb; 
?>

範例:

<?

if($func=="charset") { 
setcookie("CHAR_GB",$GB,time()+ 31536000); 
$t=time(); 
$url="http://".$HTTP_HOST.$PHP_SELF."?".$QUERY_STRING; 
$url=str_replace("?func=charset&GB=1","", $url); 
$url=str_replace("?func=charset&GB=0","", $url); 
$url=str_replace("&func=charset&GB=1","", $url); 
$url=str_replace("&func=charset&GB=0","", $url); 
//echo $url; 
//echo "SET to Charset = $CHAR_GB"; 
$t=time(); 
echo " 
<script language=javascript> 
document.location='$url' 
</script> 
";

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<br>"; 
$url.="&".$key."=".urlencode($val); 
}

$fcontents = join( '', file( "$url" ) ); 
$code=new CCharset; 
$fcontents=$code->Big5_Gb($fcontents); 
//echo "轉換過的 $CHAR_GB"; 
echo $fcontents; 
exit;

} 
/

PHP实现---汉字简体繁体转换的更多相关文章

  1. 汉字简体繁体转换----Javascript

    最近看到有个简体--繁体字互相转换的程序,是用JS实现的,感觉很好玩,所以拿来研究研究.先看看界面如下: 汉字简体繁体转换 // 0&&parent.frames.length) { ...

  2. php 网站中文简体繁体转换类

    php 网站中文简体繁体转换类 <?php /* * define zh convert functions * 2017-4-28 use str_replace for speed * zh ...

  3. Delphi汉字简繁体转换代码(分为D7和D2010版本)

    //delphi 7 Delphi汉字简繁体转换代码unit ChineseCharactersConvert; interface uses   Classes, Windows; type   T ...

  4. java代码实现简体繁体转换

    汉字分为简体和繁体字,这是众所周知的,虽然繁体字中国大陆这边用的并不会太多,但时不时的还是会使用到.那么,如何做到简体字和繁体字的转换呢?其实很简单,这里附上一个java版本的简繁体转换,用网上找的接 ...

  5. c#简体繁体转换

     方法一已经亲测,使用正常,方法二貌似不能用. 方法一 /// <summary> /// 中文字符工具类 /// </summary> public static class ...

  6. Delphi 简体 繁体 转换

    http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=104986 試看看 這個是豬寶寶從網路上抄來的 檢視純文字版列印? fun ...

  7. .Net、C# 汉字转拼音,简体繁体转换方法

    Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持.使用该类库提供的类,.NET 开发人员可以更方便的创建支 ...

  8. spring boot: 通过filter过滤器实现中文的简体繁体字符集转换(spring boot 2.3.1)

    一,为什么要使用filter来实现简繁体转换? 项目中有时会有同时支持简体和繁体两种字符集的要求, 或者搜索引擎有支持繁体输入字符的需求. 针对繁体字符的显示, 我们通常会在数据库和模板.文案配置中默 ...

  9. Python实现简繁体转换,真的玩得花

    大家好鸭, 我是小熊猫 直接开搞!!! 1.opencc-python 首先介绍opencc中的Python实现库,它具有安装简单,翻译准确,使用方便等优点.对于我们日常的需求完全能够胜任. 1.1安 ...

随机推荐

  1. tpo-09 C2 Return a sociology book

    check out 在library里有借书的意思 第 1 段 1.Listen to a conversation between a student and a librarian employe ...

  2. Spring 配置请求过滤器,编码格式设为UTF-8,避免中文乱码

    <!-- 配置请求过滤器,编码格式设为UTF-8,避免中文乱码--> <filter> <filter-name>springUtf8Encoding</fi ...

  3. 小程序页面的四种文件(JSON、WXML、WXSS、JS)加载顺序

    一个小程序页面由四种文件组成: 1)json 页面配置文件 2)js 页面逻辑文件(必需) 3)wxml 页面结构文件(必需) 4)wxss 页面样式文件 这四个文件的加载顺序: 第一步: 加载页面j ...

  4. 【shell 练习1】编写Shell条件句练习

    实例一.比较两个整数大小 #!/bin/bash while true do read -p "Please input two int nums:" a b >/dev/& ...

  5. 蓝桥杯算法训练 区间k大数查询

    算法训练 区间k大数查询   问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个 ...

  6. JS验证验证服务器控件

    JS验证验证服务器控件 <script language="javascript" type="text/javascript"> /******* ...

  7. [c++] Getting Started - CMake

    CMake is an open-source cross platform build system, according to CMake's creator, Kitware. But CMak ...

  8. HDU 3262/POJ 3829 Seat taking up is tough(模拟+搜索)(2009 Asia Ningbo Regional)

    Description Students often have problems taking up seats. When two students want the same seat, a qu ...

  9. [zt]手把手教你写对拍程序(PASCAL)

    谁适合看这篇文章? ACMERS,OIERS或其它参加算法竞赛或需要算法的人 对操作系统并不太熟悉的人 不会写对拍的人 在网上找不到一个特别详细的对拍样例的人 不嫌弃我写的太低幼的人 前言 在NOIP ...

  10. Python 零碎信息-基础 02

    1. range xrange 的差别 1.1 range 返回列表对象. 1.2 xrange 返回xrange对象  不需要返回列表里面的值, 节省内存. >>> range(1 ...