美国yahoo内部人员文档交流使用的的twiki页面是twiki页面,但是twiki对UTF-8汉字处理不太好,导致一些莫名其妙的问题,如字体从上到下,越来越大。为了解决这个症状,本人跟踪了一下这个原因,应该是twiki的一个bug。
我们知道在firefox里面字体url转码和不转码是没有什么区别的,但是在ie6下必须要url转码,否则ie6就会成为乱码,(ie7正常)于是:
1,修改TWiki/Render.pm文件:
找到函数:
接着在该函数后面加上函数urlEncode:
2,修改TWiki.pm文件:
找到函数:
我们知道在firefox里面字体url转码和不转码是没有什么区别的,但是在ie6下必须要url转码,否则ie6就会成为乱码,(ie7正常)于是:
1,修改TWiki/Render.pm文件:
找到函数:
sub makeAnchorName {在函数末尾修改返回值为:
return urlEncode($anchorName);
接着在该函数后面加上函数urlEncode:
sub urlEncode {
my $text = shift;
$text =~ s/([^0-9a-zA-Z-_.:~!*'\/%])/'%'.sprintf('%02x',ord($1))/ge;
return $text;
}
2,修改TWiki.pm文件:
找到函数:
sub _make_params {修改:
$anchor .= '#' . shift( @args );为
$anchor .= '#' . urlEncode(shift( @args ));即可。
这次升级TWiki,我发现一个更加简单的修改这个Bug:
- Version: TWiki 4.0.0-4.2.3+
- Reason: display
- You can use tool like vim etc. To edit the lib/TWiki/Render.pm, Add function urlEncodeIntercept (line 437) above sub _linkToolTipInfo {, like this:
sub urlEncodeIntercept
{
my $text = shift;
$text = crypt($text, "salt");
return $text;
}
- Find and change (line 427):
return $anchorName;
- to:
return urlEncodeIntercept($anchorName);
Bug地址:http://twiki.org/cgi-bin/view/Main/SimToUtf8