PHP的 GB2312-UTF-8 转换函数

以下是一段gb2312 -> UTF-8 的函数,我抄了
unicode -> UTF-8 的算法,所以实际比GB2312->unicode
没多多少东西,请大家注意调用gb2utf8()时不能中英文混用
程序需要的GB2312.txt文件
<?
//Program writen by sadly www.phpx.com
//gb2utf8.php
function gb2utf8($gb)
{
if(!trim($gb))
return $gb;
$filename="gb2312.txt";
$tmp=file($filename);
$codetable=array();
while(list($key,$value)=each($tmp))
$codetable[hexdec(substr($value,0,6))]=substr($value,7,6);
$utf8="";
while($gb)
{
if (ord(substr($gb,0,1))>127)
{
$this=substr($gb,0,2);
$gb=substr($gb,2,strlen($gb));
$utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($this))-0x8080]));
}
else
{
$gb=substr($gb,1,strlen($gb));
$utf8.=u2utf8(substr($gb,0,1));
}
}
$ret="";
for($i=0;$i<strlen($utf8);$i+=3)
$ret.=chr(substr($utf8,$i,3));
return $ret;
}
function u2utf8($c)
{
for($i=0;$i<count($c);$i++)
$str="";
if ($c < 0x80) {
$str.=$c;
}
else if ($c < 0x800) {
$str.=(0xC0 $c>>6);
$str.=(0x80 $c & 0x3F);
}
else if ($c < 0x10000) {
$str.=(0xE0 $c>>12);
$str.=(0x80 $c>>6 & 0x3F);
$str.=(0x80 $c & 0x3F);
}
else if ($c < 0x200000) {
$str.=(0xF0 $c>>18);
$str.=(0x80 $c>>12 & 0x3F);
$str.=(0x80 $c>>6 & 0x3F);
$str.=(0x80 $c & 0x3F);
}
return $str;
}
?>
调用举例:通过GD输出 "中国" 两个汉字
example.php
<?
//Header("Content-type: image/gif");
$im = imagecreate(400,300);
$bkg = ImageColorAllocate($im, 0,0,0);
$clr = ImageColorAllocate($im, 255,255,255);
$fnt = "d:/winnt/fonts/simhei.ttf";
include("gb2utf8.php");
$str = gb2utf8("中国");
ImageTTFText($im, 20, 0, 10, 20, $clr, $fnt, $str);
ImageGif($im);
ImageDestroy($im);
?>
====================================

时间: 2024-11-03 22:30:49

PHP的 GB2312-UTF-8 转换函数的相关文章

网站简繁体转换函数

函数|转换 1.gb.asp <%'获取服务器生成的html代码Function GetHTTPPage(url) dim XmlHttp set XmlHttp=Server.createobject("Microsoft.XMLHTTP") XmlHttp.open "GET",url,false XmlHttp.send() 'getHTTPPage=Http.responseText if XmlHttp.readystate<>4 the

php编码转换函数mb_convert_encoding

mb_convert_encoding 函数为php内部多字节字符串编码转换函数,可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题,使用非常方便,效率非常高,几乎支持所有编码.PHP 4 >= 4.0.6.PHP 5 版本支持. 函数原型: /** * 多字节字符串编码转换函数 * * @param string str 需要进行编码转换的字符串 * @param string to_encoding 指定转换为某

php中的字符编码转换函数用法示例_php技巧

本文实例讲述了php中的字符编码转换函数的用法,分享给大家供大家参考.具体实现方法如下: 一般来说,在网页程序中,尤其是涉及到数据库的读出过程中,往往最恼火的就是字符编码的问题,php4.0.6以上的版本提供了mb_convert_encoding 可以方便的转换编码. 具体如下: 复制代码 代码如下: <?php /* Convert internal character encoding to SJIS */ $str = mb_convert_encoding($str, "SJIS

javascript html非法字符过滤与转换函数

javascript教程 html非法字符过滤与转换函数 <html xmlns="http://www.111cn.net/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> <script language="

详解PHP编码转换函数应用技巧_php实例

在PHP中有数量庞大的函数来支持我们的需求应用.下面介绍的这个函数就是有关PHP编码转换函数.希望对大家有所帮助.mb_convert_encoding 函数为PHP内部多字节字符串编码转换函数. 可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题,使用非常方便,效率非常高,几乎支持所有编码.PHP 4 >= 4.0.6.PHP 5 版本支持. PHP编码转换函数原型: /**  * 多字节字符串编码转换函数  * 

asp之转换函数示例

函数|示例|转换 asp之转换函数示例 Variant变量一般会将其代表的数据子类型自动转换成合适的数据类型,但有时候,自动转换也会造成一些数据类型不匹配的错误.这时,可使用转换函数来强制转换数据的子类型. 函数 功能 Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码. Chr 函数 返回与指定的 ANSI 字符代码相对应的字符 Hex 函数 返回表示十六进制数字值的字符串. Oct 函数 返回表示数字八进制值的字符串. CStr 函数 返回表达式,该表达式已被转换为 字符串 子

ORACLE常用数值函数、转换函数、字符串函数介绍

oracle|函数|转换|字符串 ORACLE常用数值函数.转换函数.字符串函数介绍. 数值函数: abs(m) m的绝对值 mod(m,n) m被n除后的余数 power(m,n) m的n次方 round(m[,n]) m四舍五入至小数点后n位的值(n缺省为0)trunc(m[,n]) m截断n位小数位的值(n缺省为0) -------------------------------------------------------------------------------- 字符函数:

简--繁体转换函数

函数|转换 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_GB2BIG]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[f_GB2BIG]GO --生成码表if exists (select * from dbo.sysobjects where id = object_id(N'[codetable]') and OBJECTP

oracle 转换函数的使用

oracle|函数|转换 1.日期转换函数 add_months(d,n) n 为月的倍数  :例如 d=20041116  add_months(to_date(d,'yyyymmdd',1)  结果为  20041216 日 2.数字转换函数to_number(c,'999,999')转换字符串为number型 例如:  c='158,000'     to_number(c,'999,999')  =158000

mysql时间转换函数的用法

mysql时间转换函数的用法 返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准. mysql> select DAYOFWEEK(2007-10-31); -> 4 WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, --6= 星期天). mysql> select WEEKDAY('2007-10-31 13:05:00'); -> 2 mysql> select WEEKDAY('2007-10