用PHP实现将GB编码转换为UTF8


Posted in PHP onNovember 25, 2006

gb2utf8.php 文件如下:

<?php 
Class GB2UTF8  
{  
var $gb; // 待转换的GB2312字符串  
var $utf8; // 转换后的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";  
 return false;  
 }  
$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<strlen ($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;  
}  
function U2UTF8($InStr)  
{  
for($i=0;$i<count($InStr);$i++)  
$str="";  
if ($InStr < 0x80) {  
$str.=ord($InStr);  
}  
else if ($InStr < 0x800) {  
$str.=(0xC0 | $InStr>>6);  
$str.=(0x80 | $InStr & 0x3F);  
}  
else if ($InStr < 0x10000) {  
$str.=(0xE0 | $InStr>>12);  
$str.=(0x80 | $InStr>>6 & 0x3F);  
$str.=(0x80 | $InStr & 0x3F);  
}  
else if ($InStr < 0x200000) {  
$str.=(0xF0 | $InStr>>18);  
$str.=(0x80 | $InStr>>12 & 0x3F);  
$str.=(0x80 | $InStr>>6 & 0x3F);  
$str.=(0x80 | $InStr & 0x3F);  
}  
return $str;  
}  
} 
?>

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

说明: 
需要正确设置font文件,请先确认可以使用font直接(不使用gb2utf8)输出英文。 
PHP 相关文章推荐
第八节 访问方式 [8]
Oct 09 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 PHP
php根据年月获取季度的方法
Mar 31 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
php获取本周星期一具体日期的方法
Apr 20 PHP
PHP中把有符号整型转换为无符号整型方法
May 27 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
Zend Framework分发器用法示例
Dec 11 PHP
php表单处理操作
Nov 16 PHP
PHP7 foreach() 函数修改
Mar 09 PHP
php png失真的原因及解决办法
Nov 17 PHP
目录,文件操作详谈―PHP
Nov 25 #PHP
几个学习PHP的网址
Nov 25 #PHP
php获得文件扩展名三法
Nov 25 #PHP
用PHP查询域名状态whois的类
Nov 25 #PHP
生成静态页面的PHP类
Nov 25 #PHP
PHP静态类
Nov 25 #PHP
PHP文本操作类
Nov 25 #PHP
You might like
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
python中的字典使用分享
2016/07/31 Python
Python3处理HTTP请求的实例
2018/05/10 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
Python单元测试与测试用例简析
2019/11/09 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
python 实现Harris角点检测算法
2020/12/11 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
企业厂长岗位职责
2013/12/17 职场文书
房地产项目策划书
2014/02/05 职场文书
统计员岗位职责
2015/02/11 职场文书