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

<textareaname="ci"cols="80"rows="15"></textarea>我从这里取值,读取进去是正常的,有中文英文标点等;但一旦用了explode... <textarea name="ci" cols="80" rows="15"></textarea>
我从这里取值,读取进去是正常的,有中文英文标点等;但一旦用了explode切割,英文部分没问题,但中文部分切割后打印在浏览器统统是乱码!

我以为是explode的问题,就去网站找了个号称中文截取的解决乱码的方法,方法如下:
function cnSubstr($str, $start, $len) {
$str_tmp = $len - $start;
if (strlen($str) < $str_tmp) {
$tmpstr = $str;
}else {
$tmpstr = "";
$strlen = $start + $len;
for($i = $start; $i < $strlen; $i++) {
if(ord(substr($str, $i, 1)) > 0xa0) {
$tmpstr .= substr($str, $i, 2);
$i++;
} else { $tmpstr .= substr($str, $i, 1); }
}
}
return $tmpstr;
}

截取是正常的,但打印出来仍然是乱码。

我用的是zend调试的,很奇怪,在我的电脑上上面怎么截都是正常显示,但一旦在浏览器里打印出来,就都是乱码了。

求解高手,感觉学习php以上,乱码问题是最麻烦的,学正则都没这样复杂。唉
展开
 我来答
区块链记录者
2012-03-03
知道答主
回答量:19
采纳率:100%
帮助的人:13.9万
展开全部
如下面例子,在GBK编码下会产生乱码。
原因,在php6之前,字符是以字节形式存在的,字符"碪"的gbk字节码是"B4 55",而字符"U"的字节码是"55",在explode函数中第一个参数的字符串会转成相应的字节,然后和第二个参数的字节码比对,进行分割。
在下面例子中就是 55 分割 B4 55 B4 55 55 B4 55 B4 55 ,所以"碪"字被分割了。

这种情况很多,所以在php中使用explode时应多注意!

<?php
$result = explode("U", "碪碪U碪碪");
print_r($result);
?>

我也碰到这问题了,正在研究字母解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喜欢选择的
2010-09-01 · TA获得超过367个赞
知道小有建树答主
回答量:356
采纳率:0%
帮助的人:348万
展开全部
乱码也可能不是截取问题而是编码问题,看一下zend的的工具,首选项,编码,然后再看看浏览器的编码,是否一致
---
如果还不对,把你的测试代码发上来看看
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
太平洋科技
优质机构答主

2021-02-04 · 百度认证:广东太平洋互联网信息服务有限公司官方账号,优质数码...
太平洋科技
太平洋电脑网通过分析、评测生活及工作中各类消费品,让消费者客观了解产品性能及安全状况,帮助用户做出理性购买选择。同时科普各领域产品知识,解答用户选购及使用中所遇问题。
向TA提问
展开全部

解压文件出现中文乱码怎么办解决办法

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haynes999
2010-09-01 · 超过20用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:0
展开全部
我的一个猜想:是不是页面的编码与你代码的编码格式不一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式