Class GB2UTF8
{
var $gb;
var $utf 8; // 変換された UTF8 文字列
var $CodeTable; // 変換プロセス中に使用される GB2312 コード ファイルの配列
var $ErrorMsg; // 変換プロセス中のエラー メッセージ
function GB2UTF8($InStr=" ")
{
$this->gb=$InStr;
$this->SetGb2312();
($this->gb=="")?0:$this->Convert();
}
function SetGb2312($InStr="gb2312.txt")
{ // gb2312 コード ファイルを設定します。デフォルトは gb2312.txt です
$this->ErrorMsg="";
$tmp=@file( $InStr);
if (!$tmp) {
$this->ErrorMsg="No GB2312";
$this->CodeTable=array(); ,$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; {
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])); ($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;関数 U2UTF8($InStr)
{
for($i=0;$i
$str="";
if ($InStr < 0x80) {
$str.= ord($InStr);
else if ($InStr < 0x800) {
$str.=(0xC0 | $InStr>6);
else if ($InStr < ; 0x10000) {
$str.=(0xE0 | $InStr>>12);
$str.=(0x80 | $InStr>>6 & 0x3F); =(0x80 | $InStr & 0x3F );
} else if ($InStr $str.=(0xF0 | $InStr>>18); >12 & 0x3F); $str.=(0x80 | $InStr>6 & 0x3F);
$str; を返します。 ?>
テスト ファイルは次のとおりです:
コードをコピーします
コードは次のとおりです:
Header("Content-type: image/png"); $im = imagecreate(400,300);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 184,44,6);
$obj=new gb2utf8();
$obj-> ;gb="123abc China 456def テストは正しいです";
$obj->Convert(); $white, "SIMKAI.TTF", $obj->utf8 );
ImageDestroy($im);
注意:
フォントファイルを正しく設定する必要があります。まず、(gb2utf8 を使用せずに) フォントを使用して英語を直接出力できることを確認してください。
http://www.bkjia.com/PHPjc/317042.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/317042.html技術記事 gb2utf8.php ファイルは次のとおりです。 次のようにコードをコピーします。 ?php ClassGB2UTF8 { var$gb;//変換される GB2312 文字列 var$utf8;//変換された UTF8 文字列 var$CodeTable;//変換プロセス..