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 ); } |