utf-8和gb2312自动转化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function safeEncoding($string,$outEncoding 'UTF-8')
    {
        $encoding "UTF-8";
        for($i = 0; $i strlen $string ); $i ++) {
            if (ord ( $string {$i} ) < 128)
                continue;
 
            if ((ord ( $string {$i} ) & 224) == 224) {
                // 第一个字节判断通过
                $char $string {++ $i};
                if ((ord ( $char ) & 128) == 128) {
                    // 第二个字节判断通过
                    $char $string {++ $i};
                    if ((ord ( $char ) & 128) == 128) {
                        $encoding "UTF-8";
                        break;
                    }
                }
            }
            if ((ord ( $string {$i} ) & 192) == 192) {
                // 第一个字节判断通过
                $char $string {++ $i};
                if ((ord ( $char ) & 128) == 128) {
                    // 第二个字节判断通过
                    $encoding "GB2312";
                    break;
                }
            }
        }
 
        if (strtoupper $encoding ) == strtoupper $outEncoding ))
            return $string;
        else
            return @iconv ( $encoding$outEncoding$string );
    }