澳门新葡萄京官网首页图象函数中的中文显示

php实现编码的转换,这里会把gb2312转换成utf-8

把GB码转换到UTF8,php中TTF支持UTF8编码的非ASCII字符输出.在分析这段代码之后,发现可以实现中文与ASCII混合输出图象,这样在我们操作图象函数时可以更方便.
代码如下: ? 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)-2);
$utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($this))-0x8080])); }
else { $this=substr($gb,0,1); $gb=substr($gb,1,strlen($gb)-1);
$utf8.=u2utf8($this); } } /*$ret=; for($i=0;$istrlen($utf8);$i+=3)
$ret.=chr(substr($utf8,$i,3)); return $ret;*/ return $utf8; } function
u2utf8($c) { /*for($i=0;$icount($c);$i++)*/ $str=; if ($c 0x80) {
$str.=$c; } else if ($c 0x800) { $str.=chr(0xC0 | $c6); $str.=chr(0x80 |
$c & 0x3F); } else if ($c 0x10000) { $str.=chr(0xE0 | $c12);
$str.=chr(0x80 | $c6 & 0x3F); $str.=chr(0x80 | $c & 0x3F); } else if ($c
0x200000) { $str.=chr(0xF0 | $c18); $str.=chr(0x80 | $c12 & 0x3F);
$str.=chr(0x80 | $c6 & 0x3F); $str.=chr(0x80 | $c & 0x3F); } return
$str; } ? ——————————————– ? Header
(Content-type: image/jpeg); $im = imagecreate (800, 400); $black =
ImageColorAllocate ($im, 0, 0, 0); $white = ImageColorAllocate ($im,
255, 255, 255); include(gb2utf8.php); $str=gb2utf8(aaa中过32434);
ImageTTFText ($im, 90, 10, 110, 300, $white,
/usr/share/fonts/default/TrueType/simsun.ttc, $str); ImageJPEG ($im);
ImageDestroy ($im); ?

function gb2utf8($gb) {if( !trim($gb) ) return $gb;$utf8=”;while($gb) {
if( ord(substr($gb,0,1)) 127 )
{$t=substr($gb,0,2);$gb=substr($gb,2);$utf8 .=
$this-u2utf8($this-codetable[hexdec(bin2hex($t))-0x8080]); } else {
$t=substr($gb,0,1);$gb=substr($gb,1);$utf8 .= $this-u2utf8($t); }}return
$utf8; } function u2utf8($c) {$str=”;if ($c 0x80) { $str.=$c; }else if
($c 0x800) { $str.=chr(0xC0 | $c6); $str.=chr(0x80 | $c 0x3F); }else if
($c 0x10000) { $str.=chr(0xE0 | $c12); $str.=chr(0x80 | $c6
0x3F);$str.=chr(0x80 | $c 0x3F);}else if ($c 0x200000) { $str.=chr(0xF0
| $c18); $str.=chr(0x80 | $c12 0x3F); $str.=chr(0x80 | $c6 0x3F);
$str.=chr(0x80 | $c 0x3F);}return $str; }

} 说一点,编码集我就不写出来了,用for一下就知道了.

发表评论

电子邮件地址不会被公开。 必填项已用*标注