gb2utf8.php ファイルは次のとおりです:
コードをコピー コードは次のとおりです:
< ;?php
Class GB2UTF8
{
var $gb; // 変換される GB2312 文字列
var $utf8; // 変換時に使用されます。 GB2312 コード ファイルの配列
var $ErrorMsg; // 変換プロセス中のエラー メッセージ
function GB2UTF8($InStr="")
{
$this->gb= $InStr;
$this->SetGb2312();
($this->gb=="")?0:$this->Convert();
関数SetGb2312($InStr="gb2312.txt")
{ // gb2312 コード ファイルを設定します。デフォルトは gb2312.txt です
$this->ErrorMsg=""
$tmp=@ file( $InStr);
if (!$tmp) {
$this->ErrorMsg="No GB2312";
$this->CodeTable =array ();
while(list($key,$value)=each($tmp)) {
$this->CodeTable[hexdec(substr($value,0,6))]= substr( $value,7,6);
}
}
function Convert()
{ // 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
}
else
{
$tmp=substr($str,0,1);
$str=substr($str,1,strlen($str));
$this->utf8.=$tmp; }
}
return $this->utf8;
}
関数 U2UTF8($InStr)
{
for($i=0;$i
if ($InStr < 0x80) {
$str.=ord($InStr)>}
; if ($InStr < 0x800) {
$str.=(0xC0 | $InStr>>6);
$str.=(0x80 | $InStr & 0x3F);
else if ($InStr $str.=(0xE0 | $InStr>>12);
$str.=(0x80 | $InStr>>6 & 0x3F); >$str.=(0x80 | $InStr & 0x3F);
}
else if ($InStr $str.=(0xF0 | $InStr>>18); 🎜>$str.=(0x80 | $InStr>>12 & 0x3F);
$str.=(0x80 | $InStr>>6 & 0x3F); InStr & 0x3F);
return $str;
コードは次のとおりです:
Header("コンテンツタイプ: image/png");
$im = imagecreate(400,300);
$black = ImageColorAllocate($im, 0,0,0); ($im, 184,44,6);
include("gb2utf8.php");
$obj->gb="123abc 中国 456def テストは正しい";
$obj->Convert();
ImageTTFText( $im, 20, 0, 5, 50, $white, "SIMKAI.TTF", $obj->utf8);
ImagePNG($im);
ImageDestroy($im);