php 判断字符串编码是utf-8 或gb2312
第一种方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
function is_gb2312( $str )
{
for ( $i =0; $i < strlen ( $str ); $i ++) {
$v = ord( $str [ $i ] );
if ( $v > 127) {
if ( ( $v >= 228) && ( $v <= 233) )
{
if ( ( $i +2) >= ( strlen ( $str ) - 1)) return true; // not enough characters
$v1 = ord( $str [ $i +1] );
$v2 = ord( $str [ $i +2] );
if ( ( $v1 >= 128) && ( $v1 <=191) && ( $v2 >=128) && ( $v2 <= 191) ) // utf编码
return false;
else
return true;
}
}
}
return true;
}
|
第二种方法:
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
|
/**
* 判断字符串是utf-8 还是gb2312
* @param unknown $str
* @param string $default
* @return string
*/
public static function utf8_gb2312( $str , $default = 'gb2312' )
{
$str = preg_replace( "/[\x01-\x7F]+/" , "" , $str );
if ( empty ( $str )) return $default ;
$preg = array (
"gb2312" => "/^([\xA1-\xF7][\xA0-\xFE])+$/" , //正则判断是否是gb2312
"utf-8" => "/^[\x{4E00}-\x{9FA5}]+$/u" , //正则判断是否是汉字(utf8编码的条件了),这个范围实际上已经包含了繁体中文字了
);
if ( $default == 'gb2312' ) {
$option = 'utf-8' ;
} else {
$option = 'gb2312' ;
}
if (!preg_match( $preg [ $default ], $str )) {
return $option ;
}
$str = @iconv( $default , $option , $str );
//不能转成 $option, 说明原来的不是 $default
if ( empty ( $str )) {
return $option ;
}
return $default ;
}
|
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!