« php iconv函数asp 读文件 »

php 字符格式转换

不用Iconv把UTF-8转化为GB2312方案


<?
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($tmparray_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);
print_r($charset
);

//这是在网上看到的方案,可是我不能正常运行。
//请问大家有没有gb2312-utf8对照表?
?>

 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站目录

最近发表

最新评论及回复

文章归档

Search

Powered By Z-Blog 1.8 Terminator(beta) Build 71218 Designed by Michael

Copyright 0-9999 subin.org.cn Rights Reserved. 晋ICP备08000685号