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以上,乱码问题是最麻烦的,学正则都没这样复杂。唉 展开
我从这里取值,读取进去是正常的,有中文英文标点等;但一旦用了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以上,乱码问题是最麻烦的,学正则都没这样复杂。唉 展开
4个回答
展开全部
如下面例子,在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);
?>
我也碰到这问题了,正在研究字母解决
原因,在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);
?>
我也碰到这问题了,正在研究字母解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
乱码也可能不是截取问题而是编码问题,看一下zend的的工具,首选项,编码,然后再看看浏览器的编码,是否一致
---
如果还不对,把你的测试代码发上来看看
---
如果还不对,把你的测试代码发上来看看
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
优质机构答主
2021-02-04 · 百度认证:广东太平洋互联网信息服务有限公司官方账号,优质数码...
关注
展开全部
解压文件出现中文乱码怎么办解决办法
华为Mate50 Pro曲面旗舰手机
¥6799
苹果 AirPods Pro 2代
¥1699
索尼65英寸4K HDR专业游戏电视
¥7499
惠普战66五代15.6英寸轻薄本
¥4399
查
看
更
多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我的一个猜想:是不是页面的编码与你代码的编码格式不一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询