logo   

关于substr取中文字串的乱码问题? Web 开发 / PHP - CSDN社区 community.csdn.net

关于substr取中文字串的乱码问题?楼主gundamzaku(Z钢弹)2004-03-20 01:49:16 在 Web 开发 / PHP 提问我用SUBSTR去最一段文本的一段.
从0取到20.但经常会有出现最后的一个中文字变成了"?"
我想是因为中文编码和英文编码不一样吧.
中文占两个字节.英文一个.然后读最后一个中文的时候不巧真好读了他一半的字节.然后就显示不出来了.所以变成了"?".因为最后一个字可能正好占20,21.要取到21才能正常显示.
所以想问一下.应该如何解决这个乱码问题??把0取到20改成21是没有用的.因为文本不是固定的.而且文本也是中英文混合的.
问题点数:20、回复次数:7
Top
1 楼shuzai()回复于 2004-03-20 02:51:39 得分 0 just use mb_substr()
Top
2 楼hahawen(变态的大龄青年)回复于 2004-03-20 08:06:32 得分 0 http://expert.csdn.net/Expert/FAQ/List_Room_FAQ_Index.asp?Roomid=303
Top
3 楼ice_berg16(寻梦的稻草人)回复于 2004-03-20 08:14:54 得分 20/* 函数 sub_str($text, $length)
** 功能 从文本中截取指定长度字符串,考虑了对中文的处理
** 参数 $text 要截取的文本
** 参数 $length 要截取的字符串长度
*/
function sub_str($text, $length)
{
for ($i=0; $i<$length; $i++)
{
$chr = substr($text, $i, 1);
if (ord($chr) > 0x80)//字符是中文
{
$length++;
$i++;
}

}
$str = substr($text, 0, $length);
return $str;
}
Tags:
访问文章出处: http://topic.csdn.net/t/20040320/01/2864031.html(关于substr取中文字串的乱码问题? Web 开发 / PHP - CSDN社区 community.csdn.net)

上一篇: PHP里的时间比较方法 - 日志 - yashika - UCenter Home - Powered by UCenter Home
下一篇: PHP函数substr截取中文字符出现乱码的解决办法_记录