兼容PHP5.2低版本的GB转UTF-8编码
作者:九佰佬
发表于:2022-04-15
//GB 转 UTF-8 编码
function gb_utf($gbstr)
{
if(function_exists('iconv'))
{
return @iconv('gbk','utf-8//ignore',$gbstr);
}
if(trim($gbstr)=="")
{
return $gbstr;
}
//定义静态变量,下次执行不再读取
static $CODETABLE = array();
if(empty($CODETABLE))
{
//数据文件路径
!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))
{
$CODETABLE[hexdec(substr($l, 0, 6))] = substr($l, 7, 6);
}
fclose($fp);
}
$ret = "";
$utf8 = "";
while ($gbstr != '')
{
if (ord(substr($gbstr, 0, 1)) > 0x80)
{
$thisW = substr($gbstr, 0, 2);
$gbstr = substr($gbstr, 2, strlen($gbstr));
$utf8 = "";
@$utf8 = u2utf8(hexdec($CODETABLE[hexdec(bin2hex($thisW)) - 0x8080]));
if($utf8!="")
{
for ($i = 0;$i < strlen($utf8);$i += 3)
$ret .= chr(substr($utf8, $i, 3));
}
}
else
{
$ret .= substr($gbstr, 0, 1);
$gbstr = substr($gbstr, 1, strlen($gbstr));
}
}
return $ret;
}涉及到的编码文件(解压)
版权声明
本文仅代表作者观点,不代表XX立场。
本文系作者授权百度百家发表,未经许可,不得转载。
请发表您的评论

