我在一篇关于blogilo同步错误的文章里总结了一条经验:wordpress主题目录下的functions.php文件不能用utf8格式编码,必须用ansi编码。这样才能使windows live writer或blogilo等离线博客软件正常同步、编写和发表博客。
但是为了实现Wordpress屏蔽垃圾评论功能,functions.php文件又必须采用utf8格式。因为需要添加类似以下内容才能实现垃圾评论的屏蔽:
function v7v3_comment_post( $incoming_comment ) {
$pattern = '/[一-龥]/u';
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(!preg_match($pattern, $incoming_comment['comment_content'])) {
header("Content-type: text/html; charset=utf-8");
wp_die( "
写点汉字吧,博主外语很捉急! Please write some chinese words!<a href='javascript:history.go(-1);'>返回文章页</a>
");
exit;
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'v7v3_comment_post');
如果含有以上代码的functions.php文件采用ansi格式,那么全部中文或非中文评论都会被其识别为纯英文评论而屏蔽。这是为什么呢?这是因为utf-8编码的网页跟ansi文本不兼容,ansi文本转化为utf8时会出现乱码,这些乱码字符统统会被当成英文字符。
要不就采用ansi格式,让垃圾评论屏蔽功能失效;要不就采用utf8格式,让wlw离线博客软件无法正常使用。真的就没有两全其美的办法吗?嘿嘿,经过博主小衲我的不懈探索,答案出来了:
用notepad++编辑functions.php,转换编码格式为"UTF-8无BOM编码格式"即可
呵呵,我编辑所有文件均设置为这个
这个答案对我很受用。谢了!!