首页 > 软件应用 > 一次由uft-8引起查看源文件乱码的经历

一次由uft-8引起查看源文件乱码的经历

2009年10月7日

玩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插件完全抛弃了。

  1. 2009年10月7日17:07 | #1

    没试过,看你上面的应该可行。不过我还是习惯了all in seo这个插件!

  2. 2009年10月7日17:29 | #2

    我用all in seo时,单页面、分类页都不能自动加载“description”和“keywords”


    描述和关键字都不出来。
    加入代码后就可以了

  3. 2010年3月29日04:16 | #3

    我测试了,模板原本启用后 查看源文件中文乱码

    加入代码后 果然中文显示正常。

本文的评论功能被关闭了.