这个字符串我用mb_detect_encoding函数检查是 UTF-8编码,
$s1 = iconv ( 'utf-8', 'gbk', $string );
$s1 = mb_convert_encoding ( $string, "GBK", "UTF-8" );
我用上面两种方法进行转码,结果都会乱码,请教是什么原因?
回复讨论(解决方案)
字符太少的情况下detect会不准确的
至于乱码还会受输出的编码影响,例如页面指定编码是gbk,但php输出的是utf-8字串,因素很多
$str="黑色";
如果用mb_detect_encoding函数检查是 UTF-8编码
那么就表示你的程序文件是 utf-8 编码的
既然程序是 utf-8 编码的,当然输出也就是 utf-8 的了
你把 utf-8 的转成 gbk 的,出现乱码就是必然的了
乱码很正常啊,你的页面是utf8的,但是你显示gbk的内容,所以就乱码了
你echo urlencode($s1);看看结果应该是每个汉字两字节的结果 %BA%DA%C9%AB,这个就是gbk的黑色。