一次由uft-8引起查看源文件乱码的经历
玩WordPress不到二个月,一开始的时候用的是WordPress中文SEO插件对“description”和“keywords”优化,但能些页面还的“description”和“keywords”还是空白,无没法自动获得。此期间尝试在“description”和“keywords”手动加入描述和关键字,但加入中文字后在查看源文件里到的中文都是乱码。WordPress的做的博客的主页、分类目录、这个问题困扰我很久。在网上四处找资料,找人帮手都还没搞定;最终在柳城博客那找到一段代码,按照方法加入header.php.但是查看源文件里“description”和“keywords”可以自动加入,并且描述和关键字都可以正常显示中文,就是内容里面的中文全部为显示为乱码。如果“description”和“keywords”的描述和关键字为英文,在查看源文件里就不会出现乱码了。分析出现乱码可能是utf-8编码的问题,知道了是utf-8的问题就赶紧运用WinSCP软件下传来源文件全部用Dreamweaver转成utf-8编码,传上去,改“description”和“keywords”原以为是行了,一看还是一样乱码,真是头痛了。今天在使用WinSCP连服务器编辑文件时突然想到可能是WinSCP内置编辑器的问题,设置WinSCP加入Dreamweaver修改*.php文件,然后修改header.php.加放中文的“description”和“keywords”,查看源码,OK,没乱码了。原来是用WinSCP内置的编辑器搞的鬼,它修改文件时不能保存原来的utf-8编码格式。
大家柳城博客这个段代码。通过下面的代码设置博客的Description 和 Keywords,用日志的摘要作为Description,或是文章的前220个字,用标签(tags)作为关键词Keywords。
<?php
if (!function_exists('utf8Substr')) {
function utf8Substr($str, $from, $len)
{
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
}
}
if (is_home()){
$description = "首页的描述";
$keywords = "首页的关键词";
} elseif (is_single()){
if ($post->post_excerpt) {
$description = $post->post_excerpt;
} else {
if(preg_match('/<p>(.*)<\/p>/iU',trim(strip_tags($post->post_content,"<p>")),$result)){
$post_content = $result['1'];
} else {
$post_content_r = explode("\n",trim(strip_tags($post->post_content)));
$post_content = $post_content_r['0'];
}
$description = utf8Substr($post_content,0,220);
}
$keywords = "";
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag ) {
$keywords = $keywords . $tag->name . ",";
}
}
?>
<meta name="description" content="<?php echo trim($description); ?>" />
<meta name="keywords" content="<?php echo rtrim($keywords,','); ?>" />
只需要把这段代码放在header.php就行了。加入后我们就可以把中文SEO插件完全抛弃了。
没试过,看你上面的应该可行。不过我还是习惯了all in seo这个插件!
我用all in seo时,单页面、分类页都不能自动加载“description”和“keywords”
描述和关键字都不出来。
加入代码后就可以了
我测试了,模板原本启用后 查看源文件中文乱码
加入代码后 果然中文显示正常。