09/07/04。 cathayan.org版权所有,保留一切权利。转载请保留此说明。谢绝商业转载。
“最新评论”其实是通过对字符串的截取来实现的,由于会有英文字符和中文字符混杂的情况,所以很经常地会截到一个汉字的中间,而这样截出来的这一个字节就经常是没有意义的,它显示出来就是乱码的一种。为解决这个问题,PHP项目是有努力的,在4.0.6之后推出了
MB-String函数,专门处理多字节字符串,支持许多的多字节编码方式,中文在其中是以CP936(GBK?)的名目出现的,当然UTF-8也是支持的。但在这个虚拟主机上总是返回不支持Encoding的错误,没办法用。
自己写了几行,将就解决这个问题。很粗略的根据中文GB编码第1字节>128来判断这个字节及其后一个字节合起来组成一个汉字──这是极不准确的,甚至大于128也有可能是有意义的西文字符(也许不常用),现在也就是将就用着罢了。
搞这种事,才觉得Unicode好,但现在感觉常用的UTF-8也很不成熟,不知道最后会统一到哪种统一码上去,彻底解决中日韩等多字节文字的问题、再用不着专门写这些处理。
//$ctext = substr($text, 0, $numberOfCharacters);
if (strlen($text) > $numberOfCharacters) {
for($i=0; $i < $numberOfCharacters; $i++)
if ( ord($text[$i]) > 128 ) $i++;
$ctext = substr($text, 0, $i);
}
else { $ctext = $text; }
BTW,如果谁还要Gmail,还可以按下方Gmail地址发信索取。
09/07/04 00:29:16,由
cathayan发表。目录:
电脑
I am watching and will delete all spam.