コード例 #1
0
ファイル: charset.func.php プロジェクト: klr2003/sourceread
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;
}
コード例 #2
0
ファイル: txtrender.php プロジェクト: h16o2u9u/rtoss
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);
    }
}