Home  >  Article  >  Backend Development  >  Use PHP to convert GB encoding to UTF8_PHP tutorial

Use PHP to convert GB encoding to UTF8_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 16:00:44865browse

gb2utf8.php file is as follows:

Copy code The code is as follows:

Class GB2UTF8
{
var $gb; // GB2312 string to be converted
var $utf8; // Converted UTF8 string
var $CodeTable; // Used during conversion GB2312 code file array
var $ErrorMsg; // Error message during conversion process

function GB2UTF8($InStr="")
{
$this->gb= $InStr;
$this->SetGb2312();
($this->gb=="")?0:$this->Convert();
}

function SetGb2312($InStr="gb2312.txt")
{ // Set gb2312 code file, the default is gb2312.txt
$this->ErrorMsg="";
$tmp=@ file($InStr);
if (!$tmp) {
$this->ErrorMsg="No GB2312";
return false;
}
$this->CodeTable =array();
while(list($key,$value)=each($tmp)) {
$this->CodeTable[hexdec(substr($value,0,6))]= substr($value,7,6);
}
}

function Convert()
{ // To convert GB2312 string to UTF8 string, $gb needs to be set in advance
$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$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;
}

function U2UTF8($InStr)
{
for($i=0;$i$str="";
if ($InStr < 0x80) {
$str.=ord($InStr);
}
else if ($InStr < 0x800) {
$str.=(0xC0 | $InStr>>6);
$str.=(0x80 | $InStr & 0x3F);
}
else if ($InStr < 0x10000) {
$str.=(0xE0 | $InStr>>12);
$str.=(0x80 | $InStr>>6 & 0x3F);
$str.=(0x80 | $InStr & 0x3F);
}
else if ($InStr < 0x200000) {
$str.=(0xF0 | $InStr>>18);
$str.=(0x80 | $InStr>>12 & 0x3F);
$str.=(0x80 | $InStr>>6 & 0x3F);
$str.=(0x80 | $ InStr & 0x3F);
}
return $str; 🎜>
Copy code

The code is as follows:

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=new gb2utf8();
$obj->gb="123abc China 456def test is correct";
$obj->Convert();
ImageTTFText( $im, 20, 0, 5, 50, $white, "SIMKAI.TTF", $obj->utf8);
ImagePNG($im);
ImageDestroy($im);
? >



Note:
You need to set the font file correctly. Please first confirm that you can use font to output English directly (without using gb2utf8).​

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/317042.htmlTechArticlegb2utf8.php file is as follows: Copy the code as follows: ?php ClassGB2UTF8 { var$gb;//To be converted GB2312 string var$utf8;//Converted UTF8 string var$CodeTable;//During the conversion process...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn