function utf82gb($utfstr) { if (function_exists('iconv')) { return iconv('utf-8', 'gbk//ignore', $utfstr); } global $UC2GBTABLE; $okstr = ""; if (trim($utfstr) == "") { return $utfstr; } if (empty($UC2GBTABLE)) { $filename = DEDEINC . "/data/gb2312-utf8.dat"; $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; }
function Conv2UTF8($text, $RefCode = 1, $Codepage = "big5") { switch ($Codepage) { case "gb": case "936": return gb2utf8($text, $RefCode); case "sjis": case "932": return sjis2utf8($text, $RefCode); case "ws": return ws2utf8($text, $RefCode); case "ru": return ru2utf8($text, $RefCode); case "heb": return heb2utf8($text, $RefCode); case "utf8": return utf82u($text, $RefCode); case "big5": case "950": default: return big52utf8($text, $RefCode); } }