Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 php不使用iconv库进行gb2312与utf-8编码转换的函数

php不使用iconv库进行gb2312与utf-8编码转换的函数

发布时间:2015-02-24   编辑:www.jquerycn.cn
一份容量不小的gb2312.txt(184799字节)文件,,而且还要进行unicode转换。

一份容量不小的gb2312.txt(184799字节)文件,,而且还要进行unicode转换。
这份对照表为51965字节,就要小的多了。对于无法使用iconv函数库的场合,还是非常有用的。
有需要的朋友建议参考下。

复制代码 代码如下:

<?php
//对照表的使用
$filename = "gb2utf8.txt";
$fp = fopen($filename,"r");
while(! feof($fp)) {
list($gb,$utf8) = fgetcsv($fp,10);
$charset[$gb] = $utf8;
}
fclose($fp);
//以上读取对照表到数组备用

/** gb2312到utf-8 **/
function gb2utf8($text, &$charset) {
//提取文本中的成分,汉字为一个元素,连续的非汉字为一个元素
preg_match_all("/(?:[\x80-\xff].)|[\x01-\x7f]+/",$text,$tmp);
$tmp = $tmp[0];
//分离出汉字
$ar = array_intersect($tmp, array_keys($charset));
//替换汉字编码
foreach($ar as $k=>$v)
$tmp[$k] = $charset[$v];
//返回换码后的串
return join('',$tmp);
}

/** utf-8到gb2312 **/
function utf82gb($text, &$charset) {
$p = "/[xf0-xf7][x80-xbf]{3}|[xe0-xef][x80-xbf]{2}|[xc2-xdf][x80-xbf]|[x01-x7f]+/";
preg_match_all($p,$text,$r);
$utf8 = array_flip($charset);
foreach($r[0] as $k=>$v)
if(isset($utf8[$v]))
$r[0][$k] = $utf8[$v];
return join('',$r[0]);
}

//测试
$s = gb2utf8('这是对照表的测试', $charset);
echo utf82gb($s, $charset);
?>

您可能感兴趣的文章:
设置php页面编码的二种方法
php iconv函数解决utf-8与gb2312编码转换问题
php iconv使用要注意的问题
php字符编码转换问题 mb_convert_encoding与iconv函数
php iconv 函数转换gb2312编码时遇到的问题
php iconv mb_convert_encoding编码转换函数
php编码转换实例教程
php不使用iconv库进行gb2312与utf-8编码转换的函数
学习php字符串编码的转换与判断
php编码转换函数mb_convert_encoding与iconv

关键词: gbk  iconv  unicode编码  utf8  编码转换   
[关闭]