转自 平生一笑@thinkjam
原文出处
http://www.thinkjam.org/zoptuno/archives/2005/09/stringmultibyte.html
Movable Type对中文的支持不错,但就是有个老毛病,就是在截断过长的中文时(如接收到的引用通告摘要),出现乱码。这虽不影响正常的使用,但看着就是不爽,更不要说还会影响网页的SEO了。
怎么解决呢?那就是Perl的String-Multibyte模块。
你可以采用两种方法安装此模块。一种是作为系统模块,在命令行下输入"ppm install String-Multibyte";另一种是从这里下载String-Multibyte模块解压缩后,将Multibyte.pm文件和 Multibyte目录上传到MT安装目录的extlib\String(没有String目录的话,请自行创建)目录下。
安装好模块后,就可以在MT程序中调用。对我们而言,主要是修改两个文件,即\lib\MT\App下的CMS.pm和Trackback.pm。
打开这两个文件,在@MT::App::Trackback::ISA = qw( MT::App );前加上
use String::Multibyte;
my $utf8 =
String::Multibyte->new('UTF8');随后将需要的$substr和$length函数换为$utf8->substr和$utf8->length。
Update! 2005.9.29
为了让 trim_to 参数正常,请打开 \lib\MT\Template\ 下的 Context.pm 文件,在 use MT::ErrorHandler; 前加上上述内容,然后将
if (my $len = $local_args{trim_to}) {
$str = substr $str, 0, $len if $len
< length($str);
}
改为
if (my $len = $local_args{trim_to}) {
$str = $utf8->substr($str, 0,
$len) if $len < $utf8->length($str);
}
据sah测时,目前只对采用静态方式的归档有作用。
随后将需要的$substr和$length函数换为$utf8->substr和$utf8->length。在vim中,替换可以这样来做 :1,$s/substr(/$utf8->substr(/g
:1,$s/length(/$utf8->length(/g

看不懂!呵呵!
10.1有什么活动啊!
我是一直有上班,没有办法!不过瞎子、邹志军、小建、还有李国辉都过来了!
昨天晚上打牌喝酒,挺高兴的!
没啥活动,就是和方别、精别、罗涛、张蓉等出来聚聚
本来想到广州来的,看有些人还要上班,就算了