首页 > 新闻动态 >  

新闻动态
NEWS

PHP主动断定字符集并转码的办法分享

添加时间:2013-7-22 点击量:

PHP主动断定字符集并转码。


道理:
因为gb2312/gbk是中文两字节,这两个字节是有取值局限的,而utf-8中汉字是三字节,同样每个字节也有取值局限。而英文不 管在何种编码景象下,都是小于128,只占用一个字节(全角除外)。

若是是文件情势的编码搜检,还可以直接check utf-8的BOM信息。话不久不多说,直接上函数,这个函数是用来对字符串进行搜检和转码的。
代码如下:



<?php

/
主动断定字符集并转码
/
function safeEncoding(¥string¥outEncoding =UTF-8
{
¥encoding = UTF-8;
for¥i=0;¥i<strlen¥string);¥i++
{
iford¥string{¥i})<128
continue;

if((ord¥string{¥i})&224)==224
{
//第一个字节断定经由过程
¥char = ¥string{++¥i};
if((ord¥char)&128)==128
{
//第二个字节断定经由过程
¥char = ¥string{++¥i};
if((ord¥char)&128)==128
{
¥encoding = UTF-8;
break;
}
}
}

if((ord¥string{¥i})&192)==192
{
//第一个字节断定经由过程
¥char = ¥string{++¥i};
if((ord¥char)&128)==128
{
// 第二个字节断定经由过程
¥encoding = GB2312;
break;
}
}
}
//by www.jbxue.com

ifstrtoupper¥encoding) == strtoupper¥outEncoding))
return ¥string;
else
return iconv¥encoding¥outEncoding¥string);
}
?>

所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
分享到: