原理很简单因为gb/gbk是中文两字节这两个字节是有取值范围的而utf中汉字是三字节同样每个字节也有取值范围而英文不 管在何种编码情况下都是小于只占用一个字节(全角除外)
如果是文件形式的编码检查还可以直接check utf的BOM信息话不多说直接上函数这个函数是用来对字符串进行检查和转码的
复制代码 代码如下:
<?php
function safeEncoding($string$outEncoding =UTF)
{
$encoding = "UTF";
for($i=;$i<strlen($string);$i++)
{
if(ord($string{$i})<)
continue;
if((ord($string{$i})&)==)
{
//第一个字节判断通过
$char = $string{++$i};
if((ord($char)&)==)
{
//第二个字节判断通过
$char = $string{++$i};
if((ord($char)&)==)
{
$encoding = "UTF";
break;
}
}
}
if((ord($string{$i})&)==)
{
//第一个字节判断通过
$char = $string{++$i};
if((ord($char)&)==)
{
// 第二个字节判断通过
$encoding = "GB";
break;
}
}
}
if(strtoupper($encoding) == strtoupper($outEncoding))
return $string;
else
return iconv($encoding$outEncoding$string);
}
?>