下载JBLOG 1.5.2 基于PHP+MySQL的博客程序

UTF-8中文截取函数

2008-04-25  |  分类:技术学习

在PHP中,用substr()函数截取带有中文字符串的话,可能会出现乱码,这是因为中西文一个字所占有的字节数不一样,而substr的长度参数是按照字节去算的。在GB2312编码时,一个中文占2个字节,英文为1个字节,而在UTF-8编码当中,一个中文可能占有2个或3个字节,英文或半角标点占1字节。

为解决这个问题,我找了很多资料,最终找到这么一段文字:

UTF-8编码的字符可能由1~3个字节组成, 具体数目可以由第一个字节判断出来。(理论上可能更长,但这里假设不超过3个字节)
第一个字节大于224的,它与它之后的2个字节一起组成一个UTF-8字符
第一个字节大于192小于224的,它与它之后的1个字节组成一个UTF-8字符
否则第一个字节本身就是一个英文字符(包括数字和一小部分标点符号)。

全文阅读 »

前一小段时间在学ASP.NET,由于某些原因,暂时放弃了,回到PHP的怀抱。发现PHP才是我的最爱,趁着这两天休息,好好写写代码。这次准备写个BLOG程序给自己用,也当做练手。自离开老迷的JSCRIPT工程以后,好久没这么认真写过代码了,发现我写起代码来特别有激情。昨天晚上弄到差不多凌晨4点钟才睡,今天差不多9点钟就起床了。起床后又继续弄,早餐都懒得吃,所以今天生活特别简朴。吃了点粥,吃了碗泡面,下午才跑下楼买点菜回来煮。

全文阅读 »

昨晚在写程序时误解了htmlentities函数的作用,结果导致处理过的字符串变成一堆乱码,不知所云。 htmlentities的作用是把所有字符串都转换成HTML字符。把提交的数据用该函数处理,中文也被试图转换成HTML,结果导致中文都变成乱码,无法入库。其实应该用htmlspecialchars函数,该函数只会把几个特殊的字符(如&,",>,<)转换成HTML格式,其它保持不变。

全文阅读 »