兼容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;
	}




涉及到的编码文件(解压)

gb2312-utf8.zip


版权声明

本文仅代表作者观点,不代表XX立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

请发表您的评论