扩充big5_func的Gb互转utf8函数
|
|
Author: Autoit | Date:2006-11-09 | View: 10149 | Digg: 59 |
|
joomla.org.tw的版本里的 big5_func 里没有 gb <->utf8 的互转, 在没有iconv与 mb_convert的情况下使用起来就很别脚了[gb<->big5<->utf8]. 方法: 在includes/下面的 big5_func.default.php 结尾 ?> 前面增加: /****************************** //UTF-8 转GB编码 *******************************/ function utf82gb($utfstr) { global $UC2GBTABLE; $okstr = ""; if(trim($utfstr)=="") return $utfstr; if(empty($UC2GBTABLE)){ $filename = dirname(__FILE__)."/gb2312-utf8.table"; $fp = fopen($filename,"r"); while($l = fgets($fp,15)) { $UC2GBTABLE[hexdec(substr($l, 7, 6))] = hexdec(substr($l, 0, 6));} fclose($fp); } $okstr = ""; $ulen = strlen($utfstr); for($i=0;$i<$ulen;$i++) { $c = $utfstr[$i]; $cb = decbin(ord($utfstr[$i])); if(strlen($cb)==8){ $csize = strpos(decbin(ord($cb)),"0"); for($j=0;$j < $csize;$j++){ $i++; $c .= $utfstr[$i]; } $c = utf82u($c); if(isset($UC2GBTABLE[$c])){ $c = dechex($UC2GBTABLE[$c]+0x8080); $okstr .= chr(hexdec($c[0].$c[1])).chr(hexdec($c[2].$c[3])); } else { $okstr .= "&#".$c.";";} } else $okstr .= $c; } $okstr = trim($okstr); return $okstr; } /******************************* //GB转UTF-8编码 *******************************/ function gb2utf8($gbstr) { global $CODETABLE; if(trim($gbstr)=="") return $gbstr; if(empty($CODETABLE)){ $filename = dirname(__FILE__)."/gb2312-utf8.table"; $fp = fopen($filename,"r"); while ($l = fgets($fp,15)) { $CODETABLE[hexdec(substr($l, 0, 6))] = substr($l, 7, 6); } fclose($fp); } $ret = ""; $utf8 = ""; while ($gbstr) { if (ord(substr($gbstr, 0, 1)) > 0x80) { $thisW = substr($gbstr, 0, 2); $gbstr = substr($gbstr, 2, strlen($gbstr)); $utf8 = ""; @$utf8 = u2utf8(hexdec($CODETABLE[hexdec(bin2hex($thisW)) - 0x8080])); if($utf8!=""){ for ($i = 0;$i < strlen($utf8);$i += 3) $ret .= chr(substr($utf8, $i, 3)); } } else { $ret .= substr($gbstr, 0, 1); $gbstr = substr($gbstr, 1, strlen($gbstr)); } } return $ret; } 保存上传. 然后将gb2312-utf8.table也上传到当然目录. 那么在需要的地方就可以直使用 utf82gb() 与gb2utf8()来进行 gb 与utf8之间的转换了.
Ps: 以前有写的一个 mod_baidump3search [在当前页面上[utf8编码格式]选中要在baidu mp3里搜索的字后点击当前图片就可以直接在 mp3.baidu.com [gb2312编码格式]里搜索.]里也有用到的一个 utf转gb的函数, 那个是用 JS 来实现的. 如果需要,可以下载参考. Permanent URL: http://www.autoit.cn/index.php/content/view/84/25.html |