Home  >  Article  >  Backend Development  >  PHP's GB2312-UTF-8 conversion function_PHP tutorial

PHP's GB2312-UTF-8 conversion function_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 11:04:31839browse

The following is a function of gb2312 -> UTF-8. I copied the algorithm of
unicode -> UTF-8, so it is actually not much more than GB2312->unicode
. Please pay attention to calling gb2utf8 () cannot mix Chinese and English
GB2312.txt file required by the program
//Program writen by sadly www.phpx.com
//gb2utf8.php
function gb2utf8 ($gb)
{
if(!trim($gb))
return $gb;
$filename="gb2312.txt";
$tmp=file($filename) ;
$codetable=array();
while(list($key,$value)=each($tmp))
$codetable[hexdec(substr($value,0,6))] =substr($value,7,6);
$utf8="";
while($gb)
{
if (ord(substr($gb,0,1))> ;127)
{
$this=substr($gb,0,2);
$gb=substr($gb,2,strlen($gb));
$utf8.= u2utf8(hexdec($codetable[hexdec(bin2hex($this))-0x8080]));
}
else
{
$gb=substr($gb,1,strlen($gb ));
$utf8.=u2utf8(substr($gb,0,1));
}
}
$ret="";
for($i=0; $i$ret.=chr(substr($utf8,$i,3));
return $ret;
}
function u2utf8($c)
{
for($i=0;$i$str="";
if ($c < 0x80 ) {
$str.=$c;
}
else if ($c < 0x800) {
$str.=(0xC0 $c>>6);
$ str.=(0x80 $c & 0x3F);
}
else if ($c < 0x10000) {
$str.=(0xE0 $c>>12);
$str .=(0x80 $c>>6 & 0x3F);
$str.=(0x80 $c & 0x3F);
}
else if ($c < 0x200000) {
$ str.=(0xF0 $c>>18);
$str.=(0x80 $c>>12 & 0x3F);
$str.=(0x80 $c>>6 & 0x3F) ;
$str.=(0x80 $c & 0x3F);
}
return $str;
}
?>
Call example: output "China" through GD Two Chinese characters
example.php
//Header("Content-type: image/gif");
$im = imagecreate(400,300);
$bkg = ImageColorAllocate ($im, 0,0,0);
$clr = ImageColorAllocate($im, 255,255,255);
$fnt = "d:/winnt/fonts/simhei.ttf";
include(" gb2utf8.php");
$str = gb2utf8("China");
ImageTTFText($im, 20, 0, 10, 20, $clr, $fnt, $str);
ImageGif( $im);
ImageDestroy($im);
?>
============================ ========


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/445195.htmlTechArticleThe following is a gb2312-UTF-8 function. I copied the unicode-UTF-8 algorithm, so the actual There is not much more than GB2312-unicode. Please note that when calling gb2utf8(), you cannot mix Chinese and English...
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