您好,欢迎访问一九零五行业门户网

PHP判断字符串是utf-8 还是gb2312并实现utf-8和gb2312自动转化

判断字符串是utf-8 还是gb2312函数
/*** 判断字符串是utf-8 还是gb2312* @param unknown $str* @param string $default* @return string*/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;}
utf-8和gb2312自动转化
/*** utf-8和gb2312自动转化* @param unknown $string* @param string $outencoding* @return unknown|string*/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;elsereturn @iconv ( $encoding, $outencoding, $string );}
其它类似信息

推荐信息