文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>一段将GB编码转换为utf8的代码

一段将GB编码转换为utf8的代码

时间:2005-07-18  来源:牧熊人

一段将GB编码转换为utf8的代码
gb2utf8.php 文件如下:
     
[color="#007700"]Class GB2UTF8
{
var [color="#0000bb"]$gb[color="#007700"];          // 待转换的GB2312字符串
[color="#007700"]var [color="#0000bb"]$utf8[color="#007700"];        // 转换后的UTF8字符串
    [color="#007700"]var [color="#0000bb"]$CodeTable[color="#007700"];   // 转换过程中使用的GB2312代码文件数组
    [color="#007700"]var [color="#0000bb"]$ErrorMsg[color="#007700"];    // 转换过程之中的错误讯息
[color="#007700"]function [color="#0000bb"]GB2UTF8[color="#007700"]([color="#0000bb"]$InStr[color="#007700"]=[color="#dd0000"]"")
{
[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]gb[color="#007700"]=[color="#0000bb"]$InStr;
[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]SetGb2312();
([color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]gb[color="#007700"]==[color="#dd0000"]""[color="#007700"])?[color="#0000bb"]0[color="#007700"]:[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]Convert();
}
function [color="#0000bb"]SetGb2312[color="#007700"]([color="#0000bb"]$InStr[color="#007700"]=[color="#dd0000"]"gb2312.txt")
{                  // 设置gb2312代码文件,默认为gb2312.txt
[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]ErrorMsg[color="#007700"]=[color="#dd0000"]"";
[color="#0000bb"]$tmp[color="#007700"]=@[color="#0000bb"]file[color="#007700"]([color="#0000bb"]$InStr);
        if (![color="#0000bb"]$tmp) {
            [color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]ErrorMsg[color="#007700"]=[color="#dd0000"]"No GB2312";
            return [color="#0000bb"]false;
            }
[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]CodeTable=array();
while(list([color="#0000bb"]$key[color="#007700"],[color="#0000bb"]$value[color="#007700"])=[color="#0000bb"]each[color="#007700"]([color="#0000bb"]$tmp)) {
[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]CodeTable[color="#007700"][[color="#0000bb"]hexdec[color="#007700"]([color="#0000bb"]substr[color="#007700"]([color="#0000bb"]$value[color="#007700"],[color="#0000bb"]0[color="#007700"],[color="#0000bb"]6[color="#007700"]))]=[color="#0000bb"]substr[color="#007700"]([color="#0000bb"]$value[color="#007700"],[color="#0000bb"]7[color="#007700"],[color="#0000bb"]6);
}
}
  
function [color="#0000bb"]Convert()
{                   // 转换GB2312字符串到UTF8字符串,需预先设置$gb
[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]utf8[color="#007700"]=[color="#dd0000"]"";
if(![color="#0000bb"]trim[color="#007700"]([color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]gb[color="#007700"]) || [color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]ErrorMsg[color="#007700"]!=[color="#dd0000"]"") {
return ([color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]utf8[color="#007700"]=[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]ErrorMsg);
}
        [color="#0000bb"]$str[color="#007700"]=[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]gb;
while([color="#0000bb"]$str) {
if ([color="#0000bb"]ord[color="#007700"]([color="#0000bb"]substr[color="#007700"]([color="#0000bb"]$str[color="#007700"],[color="#0000bb"]0[color="#007700"],[color="#0000bb"]1[color="#007700"]))>[color="#0000bb"]127)
{
[color="#0000bb"]$tmp[color="#007700"]=[color="#0000bb"]substr[color="#007700"]([color="#0000bb"]$str[color="#007700"],[color="#0000bb"]0[color="#007700"],[color="#0000bb"]2);
[color="#0000bb"]$str[color="#007700"]=[color="#0000bb"]substr[color="#007700"]([color="#0000bb"]$str[color="#007700"],[color="#0000bb"]2[color="#007700"],[color="#0000bb"]strlen[color="#007700"]([color="#0000bb"]$str));
[color="#0000bb"]$tmp[color="#007700"]=[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]U2UTF8[color="#007700"]([color="#0000bb"]hexdec[color="#007700"]([color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]CodeTable[color="#007700"][[color="#0000bb"]hexdec[color="#007700"]([color="#0000bb"]bin2hex[color="#007700"]([color="#0000bb"]$tmp[color="#007700"]))-[color="#0000bb"]0x8080]));
for([color="#0000bb"]$i[color="#007700"]=[color="#0000bb"]0[color="#007700"];[color="#0000bb"]$i[color="#007700"])
[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]utf8[color="#007700"].=[color="#0000bb"]chr[color="#007700"]([color="#0000bb"]substr[color="#007700"]([color="#0000bb"]$tmp[color="#007700"],[color="#0000bb"]$i[color="#007700"],[color="#0000bb"]3));
}
else
{
[color="#0000bb"]$tmp[color="#007700"]=[color="#0000bb"]substr[color="#007700"]([color="#0000bb"]$str[color="#007700"],[color="#0000bb"]0[color="#007700"],[color="#0000bb"]1);
[color="#0000bb"]$str[color="#007700"]=[color="#0000bb"]substr[color="#007700"]([color="#0000bb"]$str[color="#007700"],[color="#0000bb"]1[color="#007700"],[color="#0000bb"]strlen[color="#007700"]([color="#0000bb"]$str));
[color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]utf8[color="#007700"].=[color="#0000bb"]$tmp;
}
}
return [color="#0000bb"]$this[color="#007700"]->[color="#0000bb"]utf8;
}
function [color="#0000bb"]U2UTF8[color="#007700"]([color="#0000bb"]$InStr)
{
for([color="#0000bb"]$i[color="#007700"]=[color="#0000bb"]0[color="#007700"];[color="#0000bb"]$i[color="#007700"]++)
[color="#0000bb"]$str[color="#007700"]=[color="#dd0000"]"";
if ([color="#0000bb"]$InStr [color="#007700"]) {
[color="#0000bb"]$str[color="#007700"].=[color="#0000bb"]ord[color="#007700"]([color="#0000bb"]$InStr);
}
else if ([color="#0000bb"]$InStr [color="#007700"]) {
[color="#0000bb"]$str[color="#007700"].=([color="#0000bb"]0xC0 [color="#007700"]| [color="#0000bb"]$InStr[color="#007700"]>>[color="#0000bb"]6);
[color="#0000bb"]$str[color="#007700"].=([color="#0000bb"]0x80 [color="#007700"]| [color="#0000bb"]$InStr [color="#007700"]& [color="#0000bb"]0x3F);
}
else if ([color="#0000bb"]$InStr [color="#007700"]) {
[color="#0000bb"]$str[color="#007700"].=([color="#0000bb"]0xE0 [color="#007700"]| [color="#0000bb"]$InStr[color="#007700"]>>[color="#0000bb"]12);
[color="#0000bb"]$str[color="#007700"].=([color="#0000bb"]0x80 [color="#007700"]| [color="#0000bb"]$InStr[color="#007700"]>>[color="#0000bb"]6 [color="#007700"]& [color="#0000bb"]0x3F);
[color="#0000bb"]$str[color="#007700"].=([color="#0000bb"]0x80 [color="#007700"]| [color="#0000bb"]$InStr [color="#007700"]& [color="#0000bb"]0x3F);
}
else if ([color="#0000bb"]$InStr [color="#007700"]) {
[color="#0000bb"]$str[color="#007700"].=([color="#0000bb"]0xF0 [color="#007700"]| [color="#0000bb"]$InStr[color="#007700"]>>[color="#0000bb"]18);
[color="#0000bb"]$str[color="#007700"].=([color="#0000bb"]0x80 [color="#007700"]| [color="#0000bb"]$InStr[color="#007700"]>>[color="#0000bb"]12 [color="#007700"]& [color="#0000bb"]0x3F);
[color="#0000bb"]$str[color="#007700"].=([color="#0000bb"]0x80 [color="#007700"]| [color="#0000bb"]$InStr[color="#007700"]>>[color="#0000bb"]6 [color="#007700"]& [color="#0000bb"]0x3F);
[color="#0000bb"]$str[color="#007700"].=([color="#0000bb"]0x80 [color="#007700"]| [color="#0000bb"]$InStr [color="#007700"]& [color="#0000bb"]0x3F);
}
return [color="#0000bb"]$str;
}
}

测试文件如下:
php
Header[color="#007700"]([color="#dd0000"]"Content-type: image/png");
[color="#0000bb"]$im [color="#007700"]= [color="#0000bb"]imagecreate[color="#007700"]([color="#0000bb"]400[color="#007700"],[color="#0000bb"]300);
[color="#0000bb"]$black [color="#007700"]= [color="#0000bb"]ImageColorAllocate[color="#007700"]([color="#0000bb"]$im[color="#007700"], [color="#0000bb"]0[color="#007700"],[color="#0000bb"]0[color="#007700"],[color="#0000bb"]0);
[color="#0000bb"]$white [color="#007700"]= [color="#0000bb"]ImageColorAllocate[color="#007700"]([color="#0000bb"]$im[color="#007700"], [color="#0000bb"]184[color="#007700"],[color="#0000bb"]44[color="#007700"],[color="#0000bb"]6);
include([color="#dd0000"]"gb2utf8.php");
[color="#0000bb"]$obj[color="#007700"]=new [color="#0000bb"]gb2utf8();
[color="#0000bb"]$obj[color="#007700"]->[color="#0000bb"]gb[color="#007700"]=[color="#dd0000"]"123abc中国456def测试正确";
[color="#0000bb"]$obj[color="#007700"]->[color="#0000bb"]Convert();
[color="#0000bb"]ImageTTFText[color="#007700"]([color="#0000bb"]$im[color="#007700"], [color="#0000bb"]20[color="#007700"], [color="#0000bb"]0[color="#007700"], [color="#0000bb"]5[color="#007700"], [color="#0000bb"]50[color="#007700"], [color="#0000bb"]$white[color="#007700"], [color="#dd0000"]"SIMKAI.TTF"[color="#007700"], [color="#0000bb"]$obj[color="#007700"]->[color="#0000bb"]utf8);
[color="#0000bb"]ImagePNG[color="#007700"]([color="#0000bb"]$im);
[color="#0000bb"]ImageDestroy[color="#007700"]([color="#0000bb"]$im[color="#007700"]);

说明:
需要正确设置font文件,请先确认可以使用font直接(不使用gb2utf8)输出英文。
gb2312.txt请在网上查找

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载