http://ctb.11cn.org/index.php?mods=topicdisplay&forumid=3&postid=317

解决方案 »

  1.   

    1.先取得big5-gb.table档,你可在下面网址找到 
    http://netcity.hinet.net/kstchieh/table.zip 
    2.加入下列PHP程式码: function big52gb($Text){ 
     $fp = fopen(\"big5-gb.table\", \"r\");  $max=strlen($Text)-1; 
     for($i=0;$i<$max;$i++){ 
      $h=ord($Text[$i]); 
      if($h>=160){ 
     $l=ord($Text[$i+1]); 
     if($h==161 && $l==64){ 
      $gb=\"\"; 
     }else{ 
      fseek($fp,($h-160)*510+($l-1)*2); 
      $gb=fread($fp,2); 
     } 
     $Text[$i]=$gb[0]; 
     $Text[$i+1]=$gb[1]; 
     $i++; 
      } 
     } 
     fclose($fp); 
     return $Text; 

    3.接著就可以用了 $a=\"繁体转简体\"; 
    $a=big52gb($a); 
    以上程式码是最简单的方法,也就是一个一个翻,至於速度 还可以,若要快点,那就要改写一下方法了(我不是用这种方法,不过因为我的方法还在测试中,还不知稳不稳定, 所以暂时没写出来)...^^
      

  2.   

    简体中文转换为繁体中文的PHP函数其调用方式为$txt=gbtobig5($txt)。 
    (注:源代码中的include "data_gb.php";这个文件在就是一个数组,在http://caocao.oso.com.cn/data_gb.zip,请编辑下载到oso上,做一个链接,因为这个文件我过几天就要删除了。) <? 
    /*********************************************************************** 
    Written by caocao 
    [email protected] 
    http://caocao.oso.com.cn With the help of Keyes 
    [email protected] 
    http://my-wjl.scu.edu.cn/~Keyes 
    ***********************************************************************/ 
    function isgb($code) 

    if (strlen($code)>=2) 

    $code=strtok($code,""); 
    if ((ord($code[0]) < 161)||(ord($code[0]) >= 247)) 

    return (0); 

    else 

    if ((ord($code[1]) <= 161)||(ord($code[1]) >= 254)) 

    return (0); 

    else 

    return (1); 



    else 

    return (1); 

    } function gboffset($code) 

    if (strlen($code) >= 2) 

    $code=strtok($code,""); 
    return ((ord($code[0]) - 161) * 94 + (ord($code[1]) - 161)); 

    else 

    return(-1); 

    } function wordtostring($code) 

    return (chr(hexdec(substr($code,0,2))).chr(hexdec(substr($code,2,2)))); 
    } function gbtobig5($code) 

    include "data_gb.php"; 
    $output=""; 
    $length=strlen($code); 
    $code=strtok($code,""); 
    $idx=0; 
    while ($idx < $length) 

    $tmpStr=$code[$idx].$code[$idx+1]; if (isgb($tmpStr)) 

    $offset=gboffset($tmpStr); 
    if (($offset >= 0)||($offset <= 8177)) 

    $output.=wordtostring($gborder[$offset]); 
    $idx++; 

    else 

    $output.= $code[$idx]; 


    else 

    $output.= $code[$idx]; 

    $idx++; 

    return ($output); 
    }; 
    ?> 
      

  3.   

    繁体中文转换为简体中文的PHP函数前几天我在oso论坛上问有没有这个源程序,没人回复。终于下定决心移植一个这样的函数,感谢网友Keyes提供移植用的Delphi源代码。其调用方式为$txt=big5togb($txt)。 
    (注:源代码中的include "data_big5.php";这个文件在就是一个数组,在http://caocao.oso.com.cn/data_big5.zip,请编辑下载到oso上,做一个链接,因为这个文件我过几天就要删除了。) <? 
    /*********************************************************************** 
    Written by caocao 
    [email protected] 
    http://caocao.oso.com.cn With the help of Keyes 
    [email protected] 
    http://my-wjl.scu.edu.cn/~Keyes 
    ***********************************************************************/ 
    function isbig5($code) 

    if (strlen($code)>=2) 

    $code=strtok($code,""); if (ord($code[0]) < 161) 

    return (0); 

    else 

    if (((ord($code[1]) >= 64)&&(ord($code[1]) <= 126))||((ord($code[1]) >= 161)&&(ord($code[1]) <= 254))) 

    return (1); 

    else 

    return (0); 



    else 

    return (0); 

    } function big5offset($code) 

    if (strlen($code) >= 2) 

    $code=strtok($code,""); 
    if ((ord($code[1]) >= 64)&&(ord($code[1]) <= 126)) 

    return ((ord($code[0]) - 161) * 157 + (ord($code[1]) - 64)); 

    if ((ord($code[1]) >= 161)&&(ord($code[1]) <= 254)) 

    return ((ord($code[0]) - 161) * 157 + 63 + (ord($code[1]) - 161)); 


    return (-1); 
    } function wordtostring($code) 

    return (chr(hexdec(substr($code,0,2))).chr(hexdec(substr($code,2,2)))); 
    } function big5togb($code) 

    include "data_big5.php"; 
    $output=""; 
    $length=strlen($code); 
    $code=strtok($code,""); 
    $idx=0; 
    while ($idx < $length) 

    $tmpStr=$code[$idx].$code[$idx+1]; if (isbig5($tmpStr)) 

    $offset=big5offset($tmpStr); 
    if (($offset >= 0)||($offset <= 14757)) 

    $output.=wordtostring($big5order[$offset]); 
    $idx++; 

    else 

    $output.= $code[$idx]; 


    else 

    $output.= $code[$idx]; 

    $idx++; 

    return ($output); 

    ?>