//gb2312编码转utf8编码 function gb2utf8($gb)/* Program writen by sadly modified by agun */{ if (!trim($gb)) return $gb; $filename = "gb2312.txt"; $tmp = file($filename); $codetable = array(); while (list($key, $value) = each($tmp)) $codetable[hexdec(substr($value, 0, 6))] = substr($value, 7, 6); $ret = ""; $utf8 = ""; while ($gb) { if (ord(substr($gb, 0, 1)) > 127) { $this = substr($gb, 0, 2); $gb = substr($gb, 2, strlen($gb)); $utf8 = u2utf8(hexdec($codetable[hexdec(bin2hex($this)) - 0x8080])); for ($i = 0; $i < strlen($utf8); $i += 3) $ret. = chr(substr($utf8, $i, 3)); } else { $ret. = substr($gb, 0, 1); $gb = substr($gb, 1, strlen($gb)); } } return $ret; } //unicode编码转utf8编码 function 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); } return $str; }