电脑安全

您当前的位置:主页 > 电脑安全 >

不用iconv函数实现UTF-8编码转换GB2312的PHP函数-网络

来源:[db:来源]标题:   函数    编辑:电脑技术全能网 时间:2019-09-21 18:24

原标题:不用iconv函数实现UTF-8编码转换GB2312的PHP函数-网络
   如果应用 iconv() 函数转换编码就比拟比拟简略了,不外许多虚构主机里并不支撑这个组件,我在网上找半天,才找到一个gb2312转utf-8的方式,但不能逆向转换。这个函数以下:/*******************************//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)) > 127) {$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;}//Unicode转utf8function u2utf8($c) {for ($i = 0;$i < count($c);$i )$str = "";if ($c < 0x80) {$str .= $c;} else if ($c < 0x800) {$str .= (0xC0 | $c >> 6);$str .= (0x80 | $c & 0x3F);} else if ($c < 0x10000) {$str .= (0xE0 | $c >> 12);$str .= (0x80 | $c >> 6 & 0x3F);$str .= (0x80 | $c & 0x3F);} else if ($c < 0x200000) {$str .= (0xF0 | $c >> 18);$str .= (0x80 | $c >> 12 & 0x3F);$str .= (0x80 | $c >> 6 & 0x3F);$str .= (0x80 | $c & 0x3F);}

上一篇:PHP编程与应用-网络编程

下一篇:没有了