我爱学习网首页 | 设为首页 | 收藏本站 | 网站地图 您好,欢迎光临我爱学习网
我爱学习网

当前位置:首页 > 编程开发 > php > php字符串处理 >

PHP编码转换和PHP编码判断

时间:2014-08-14 15:56 来源:我爱学习网 | 作者:我爱学习网 | 本文已影响
php输出的字符串编码和header头信息声明的编码不一致时输出乱码。
 
PHP程序开发中,编码问题一定困扰了不少人,比如:当我们需要输出GBK编码的字符串时,但不知道传过来的字符串是GBK编码还是UTF8编码,因此无法转换编码,这时我们需要一个能统一编码的函数。
 
下面这个函数就是实现这样功能的,它无需要知道传过来的字符串是GBK编码还是UTF8编码。代码如下:

function getSafeStr($str){
	$s1 = iconv('utf-8','gbk',$str);
	$s0 = iconv('gbk','utf-8',$s1);
	if($s0 == $str){
		return $s1;
	}else{
		return $str;
	}
}
使用实例:

header("Content-type: text/html; charset=gbk");
$str = '这里是传过来的字符串,不管这是UTF8编码还是GBK编码,后面的输出都是正常的。';
echo getSafeStr($str);

从上面的例子可以看到,不管这是放在UTF8页面上还是放在GBK页面上,输出都是正常的,因为header发送的头信息已经声明了gbk编码,而且echo输出的内容也是通过getSafeStr函数统一过的gbk编码。
 
由上面的函数还可以改写一下,得到一个判断字符串编码的函数,如下:

function getcode($str)
{
	$s1 = iconv('utf-8','gbk',$str);
	$s0 = iconv('gbk','utf-8',$s1);
	if($s0 == $str){
		return 'utf-8';
	}else{
		return 'gbk';
	}
}

(责任编辑:我爱学习网)


分享到: 更多