php中explode截取中文又乱码,求解~~

[复制链接]
查看11 | 回复3 | 2012-3-3 17:02:41 | 显示全部楼层 |阅读模式
我从这里取值,读取进去是正常的,有中文英文标点等;但一旦用了explode切割,英文部分没问题,但中文部分切割后打印在浏览器统统是乱码!
我以为是explode的问题,就去网站找了个号称中文截取的解决乱码的方法,方法如下:
function cnSubstr($str, $start, $len) {
$str_tmp = $len - $start;
if (strlen($str)0xa0) {

$tmpstr .= substr($str, $i, 2);

$i++;

} else {$tmpstr .= substr($str, $i, 1);}

}
}

return $tmpstr;
}
截取是正常的,但打印出来仍然是乱码。
我用的是zend调试的,很奇怪,在我的电脑上上面怎么截都是正常显示,但一旦在浏览器里打印出来,就都是乱码了。
求解高手,感觉学习php以上,乱码问题是最麻烦的,学正则都没这样复杂。唉

回复

使用道具 举报

千问 | 2012-3-3 17:02:41 | 显示全部楼层
如下面例子,在GBK编码下会产生乱码。原因,在php6之前,字符是以字节形式存在的,字符"碪"的gbk字节码是"B4 55",而字符"U"的字节码是"55",在explode函数中第一个参数的字符串会转成相应的字节,然后和第二个参数的字节码比对,进行分割。在下面例子中就是 55 分割 B4 55 B4 55 55 B4 55 B4 55 ,所以"碪"字被分割了。这种情况很多,所以在php中使用explode时应多注意! 我也碰到这问题了,正在研究字母解决
回复

使用道具 举报

千问 | 2012-3-3 17:02:41 | 显示全部楼层
乱码也可能不是截取问题而是编码问题,看一下zend的的工具,首选项,编码,然后再看看浏览器的编码,是否一致 ---如果还不对,把你的测试代码发上来看看
回复

使用道具 举报

千问 | 2012-3-3 17:02:41 | 显示全部楼层
解压文件出现中文乱码怎么办解决办法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行