兼容PHP5.2低版本的UTF-8转GB编码
作者:九佰佬
发表于:2022-05-22
//UTF-8 转 GB 编码
function utf_gb($utfstr)
{
if(function_exists('iconv'))
{
return @iconv('utf-8','gbk//ignore',$utfstr);
}
if(trim($utfstr)=="")
{
return $utfstr;
}
//定义静态变量,下次执行不再读取
static $UC2GBTABLE = "";
if(empty($UC2GBTABLE))
{
//数据文件路径
!is_file(dirname(__FILE__)."/gb2312-utf8.dat") && error("不存在的编码文件表:/".dirname(__FILE__)."/gb2312-utf8.dat");
$filename = dirname(__FILE__)."/gb2312-utf8.dat";
$fp = fopen($filename,"r");
while($l = fgets($fp,15))
{
$UC2GBTABLE[hexdec(substr($l, 7, 6))] = hexdec(substr($l, 0, 6));
}
fclose($fp);
}
$okstr = "";
$ulen = strlen($utfstr);
for($i=0;$i<$ulen;$i++)
{
$c = $utfstr[$i];
$cb = decbin(ord($utfstr[$i]));
if(strlen($cb)==8)
{
$csize = strpos(decbin(ord($cb)),"0");
for($j=0;$j < $csize;$j++)
{
$i++; $c .= $utfstr[$i];
}
$c = utf82u($c);
if(isset($UC2GBTABLE[$c]))
{
$c = dechex($UC2GBTABLE[$c]+0x8080);
$okstr .= chr(hexdec($c[0].$c[1])).chr(hexdec($c[2].$c[3]));
}
else
{
$okstr .= "&#".$c.";";
}
}
else
{
$okstr .= $c;
}
}
$okstr = trim($okstr);
return $okstr;
}涉及到的编码文件(解压)
版权声明
本文仅代表作者观点,不代表XX立场。
本文系作者授权百度百家发表,未经许可,不得转载。
请发表您的评论

