用PHP实现将GB编码转换为UTF8
用PHP实现将GB编码转换为UTF8
发布时间:2016-12-29 来源:查字典编辑
摘要:gb2utf8.php文件如下:复制代码代码如下:测试文件如下:复制代码代码如下:说明:需要正确设置font文件,请先确认可以使用font直...

gb2utf8.php文件如下:

复制代码 代码如下:

<?php

ClassGB2UTF8

{

var$gb;//待转换的GB2312字符串

var$utf8;//转换后的UTF8字符串

var$CodeTable;//转换过程中使用的GB2312代码文件数组

var$ErrorMsg;//转换过程之中的错误讯息

functionGB2UTF8($InStr="")

{

$this->gb=$InStr;

$this->SetGb2312();

($this->gb=="")?0:$this->Convert();

}

functionSetGb2312($InStr="gb2312.txt")

{//设置gb2312代码文件,默认为gb2312.txt

$this->ErrorMsg="";

$tmp=@file($InStr);

if(!$tmp){

$this->ErrorMsg="NoGB2312";

returnfalse;

}

$this->CodeTable=array();

while(list($key,$value)=each($tmp)){

$this->CodeTable[hexdec(substr($value,0,6))]=substr($value,7,6);

}

}

functionConvert()

{//转换GB2312字符串到UTF8字符串,需预先设置$gb

$this->utf8="";

if(!trim($this->gb)||$this->ErrorMsg!=""){

return($this->utf8=$this->ErrorMsg);

}

$str=$this->gb;

while($str){

if(ord(substr($str,0,1))>127)

{

$tmp=substr($str,0,2);

$str=substr($str,2,strlen($str));

$tmp=$this->U2UTF8(hexdec($this->CodeTable[hexdec(bin2hex($tmp))-0x8080]));

for($i=0;$i<strlen($tmp);$i+=3)

$this->utf8.=chr(substr($tmp,$i,3));

}

else

{

$tmp=substr($str,0,1);

$str=substr($str,1,strlen($str));

$this->utf8.=$tmp;

}

}

return$this->utf8;

}

functionU2UTF8($InStr)

{

for($i=0;$i<count($InStr);$i++)

$str="";

if($InStr<0x80){

$str.=ord($InStr);

}

elseif($InStr<0x800){

$str.=(0xC0|$InStr>>6);

$str.=(0x80|$InStr&0x3F);

}

elseif($InStr<0x10000){

$str.=(0xE0|$InStr>>12);

$str.=(0x80|$InStr>>6&0x3F);

$str.=(0x80|$InStr&0x3F);

}

elseif($InStr<0x200000){

$str.=(0xF0|$InStr>>18);

$str.=(0x80|$InStr>>12&0x3F);

$str.=(0x80|$InStr>>6&0x3F);

$str.=(0x80|$InStr&0x3F);

}

return$str;

}

}

?>

测试文件如下:

复制代码 代码如下:

<?php

Header("Content-type:image/png");

$im=imagecreate(400,300);

$black=ImageColorAllocate($im,0,0,0);

$white=ImageColorAllocate($im,184,44,6);

include("gb2utf8.php");

$obj=newgb2utf8();

$obj->gb="123abc中国456def测试正确";

$obj->Convert();

ImageTTFText($im,20,0,5,50,$white,"SIMKAI.TTF",$obj->utf8);

ImagePNG($im);

ImageDestroy($im);

?>

说明:

需要正确设置font文件,请先确认可以使用font直接(不使用gb2utf8)输出英文。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新php教程学习
热门php教程学习
编程开发子分类