LifeType 中文開發論壇

開發 => 外掛程式 => 主題作者是: hzhawk 於 三月 11, 2006, 01:55:17 下午



主題: recentcomments的中文断字问题
作者: hzhawk三月 11, 2006, 01:55:17 下午
我添加了recentcomments插件后,发现在
程式碼:
{$comment->getText()|truncate:100:"..."
指定的100个文字处断字的功能对中文无法正常处理,我试着更改这个值,但都是徒劳的。
如图,ie下因为被错误断字而变成了其他奇怪的字,firefox下变成了怪符号。
请问如何解决!谢谢!


主題: Re: recentcomments的中文断字问题
作者: lss三月 11, 2006, 04:35:19 下午
請改用 utf8_truncate 取代 truncate

lss


主題: Re: recentcomments的中文断字问题
作者: ming三月 11, 2006, 09:42:49 下午
from lance:

http://www.lazylee.org/weblog/archives/cae/plogaee/index.html

解决方法:
1. PHP 打开 mbstring 支持。重新编译PHP,增加 '--enable-mbstring=all' '--enable-mbregex'选项。

2. 给 Smarty 添加新的 modifier:mb_truncate。在 Smarty 的 plugins 子目录中添加 modifier.mb_truncate.php 文件,内容基本与 modifier.truncate.php 相同,只是把 strlen 和 substr 更改为 mb_strlen 和 mb_substr,并指定字符集为 UTF-8,同时修改函数名。原truncate中的第三个参数被废除(默认为原来的true模式),因为它是基于preg_replace的实现,但 mb系列没有对应函数。

3. 修改模板中相应部分,把需要用到 truncate 的地方改成 mb_truncate.


主題: Re: recentcomments的中文断字问题
作者: lss三月 12, 2006, 12:04:09 上午
hi ming:

很抱歉下午回文時較趕時間,沒有仔細說明。 :-)

lifetype 所使用的 smarty 裡已經有一個 modifier.utf8_truncate.php 提供 utf8_trancate 修飾子來處理 utf8 字串的斷句。

使用的 utf8 字串函數在 class/data/utf8/utf8_funcs.php ,而且即使 php 沒有支援 mbstring 模組也可以使用哦。

lss


主題: Re: recentcomments的中文断字问题
作者: ming三月 12, 2006, 12:18:56 下午
使用mbstring 是會快很多的 :-)


主題: Re: recentcomments的中文断字问题
作者: lss三月 12, 2006, 02:30:11 下午
hi ming:

我也同意使用 mbstring 快很多  :-)

只是有很多虛擬主機的 PHP 並沒有支援 mbstring  :-( ,我想,這應該是開發團隊的考量吧!

lss


主題: Re: recentcomments的中文断字问题
作者: hzhawk三月 15, 2006, 09:58:21 上午
多谢两位高手的帮助,两个方法我都试了,最后选了mbstring的方法,的确比utf8_truncate的外部脚本要快一些。
http://hzhawk.cjlu.edu.cn/post/1/37


主題: Re: recentcomments的中文断字问题
作者: hzhawk三月 17, 2006, 10:09:16 上午
又有问题了!
这两天我发现这个中文断字好像不是很稳定,有时正常,又是又会有末位的乱码!
有时刷新一下又好了,有时刷新都不行。
我在后台设定里,模版等的缓存都关掉了。
能不能帮我看看什么问题啊,不行的话我就用utf8_truncate了


主題: Re: recentcomments的中文断字问题
作者: ming三月 19, 2006, 09:16:07 下午
又有问题了!
这两天我发现这个中文断字好像不是很稳定,有时正常,又是又会有末位的乱码!
有时刷新一下又好了,有时刷新都不行。
我在后台设定里,模版等的缓存都关掉了。
能不能帮我看看什么问题啊,不行的话我就用utf8_truncate了

看不到你的 blog 有這個問題‥

我們用了大半年,也很正常


主題: Re: recentcomments的中文断字问题
作者: hzhawk三月 20, 2006, 07:38:51 上午
暂时不知道哪里的问题,我先换成utf8_truncate了,等以后找到问题在哪里再换成mb


主題: Re: recentcomments的中文断字问题
作者: hzhawk三月 22, 2006, 04:01:59 下午
现在是真的搞定mbstring了
我重新设置了php.ini里的mbstring
默认设置是:
程式碼:
;mbstring.language = Japanese
;mbstring.internal_encoding = EUC-JP
;mbstring.http_output = SJIS
我曾经把注释去掉,设置成了:
程式碼:
mbstring.language = Chinese
mbstring.internal_encoding = GBK
mbstring.http_output = GBK
今天在网页上用phpinfo看了看,发现mbstring.language=neutral,也就是说,语言设置错误了,我就重新改了改配置,改成了:
程式碼:
mbstring.language = Simplified Chinese
mbstring.internal_encoding = UTF8
mbstring.http_output = UTF8
顺便把内部编码和输出编码全都改成UTF8,现在就正常了,在phpinfo里看,mbstring.language=Simplified Chinese了。我不知道我前段时间mbstring有问题是因为语言设置错误还是因为编码不一致造成的,高手能不能解说一下。谢谢!