PHP を使用して GB エンコードを UTF8 に変換する

WBOY
リリース: 2016-06-13 12:36:51
オリジナル
1297 人が閲覧しました

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$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)>}
; 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);



最初にフォント ファイルを正しく設定する必要があります。フォントを使用して (gb2utf8 を使用せずに) 英語を直接出力できることを確認します。​

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート