代码之家  ›  专栏  ›  技术社区  ›  fengd

无法在我的PHP代码中显示汉字

  •  1
  • fengd  · 技术社区  · 15 年前

    我想在我的博客中显示我的Twitter信息。所以我写了一些代码来获取它。

    我得到的问题是,汉字显示为未知代码。

    这是测试代码。谁能帮我看看吗?谢谢

        <html>
        <title>Twitter Test</title>
    <body>
    <?php
    
        function mystique_objectToArray($object){
           if(!is_object($object) && !is_array($object)) return $object;
           if(is_object($object)) $object = get_object_vars($object);
           return array_map('mystique_objectToArray', $object);
        }
    
    define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
    
        require_once('/home/jun1st/jun1stfeng.com/wp-includes/class-snoopy.php');
    
        $snoopy = new Snoopy;
        $response = @$snoopy->fetch("http://twitter.com/users/show/jun1st.json");
        if ($response) $userdata = json_decode($snoopy->results, true); else $error = true;
        $response = @$snoopy->fetch("http://twitter.com/statuses/user_timeline/jun1st.json");
        if ($response) $tweets = json_decode($snoopy->results, true); else $error = true;
        if(!$error):
          // for php < 5 (included JSON returns object)
          $userdata = mystique_objectToArray($userdata);
          $tweets = mystique_objectToArray($tweets);
    
          $twitdata = array();
    
          $twitdata['user']['profile_image_url'] = $userdata['profile_image_url'];
          $twitdata['user']['name'] = $userdata['name'];
          $twitdata['user']['screen_name'] = $userdata['screen_name'];
          $twitdata['user']['followers_count'] = $userdata['followers_count'];
          $i = 0;
          foreach($tweets as $tweet):
            $twitdata['tweets'][$i]['text'] = $tweet['text'];
            $twitdata['tweets'][$i]['created_at'] = $tweet['created_at'];
            $twitdata['tweets'][$i]['id'] = $tweet['id'];
            $i++;
          endforeach;
    
        endif;
    
        // only show if the twitter data from the database is newer than 6 hours
          if(is_array($twitdata['tweets'])): ?>
           <div class="clear-block">
             <div class="avatar"><img src="<?php echo $twitdata['user']['profile_image_url']; ?>" alt="<?php echo $twitdata['user']['name']; ?>" /></div>
             <div class="info"><a href="http://www.twitter.com/jun1st"><?php echo $twitdata['user']['name']; ?> </a><br /><span class="followers"> <?php printf(__("%s followers","mystique"),$twitdata['user']['followers_count']); ?></span></div>
           </div>
    
           <ul>
            <?php
              $i = 0;
              foreach($twitdata['tweets'] as $tweet):
                $pattern = '/\@(\w+)/';
                $replace = '<a rel="nofollow" href="http://twitter.com/$1">@$1</a>';
                $tweet['text'] = preg_replace($pattern, $replace , $tweet['text']);
                $tweet['text'] = make_clickable($tweet['text']);
    
                // remove +XXXX
                $tweettime = substr_replace($tweet['created_at'],'',strpos($tweet['created_at'],"+"),5);
    
                $link = "http://twitter.com/".$twitdata['user']['screen_name']."/statuses/".$tweet['id'];
                echo '<li><span class="entry">' . $tweet['text'] .'<a class="date" href="'.$link.'"     rel="nofollow">'.$tweettime.'</a></span></li>';
                $i++;
                if ($i == $twitcount) break;
              endforeach;
            ?>
           </ul>
        <? endif?>
    ?>
    </body>
    </html>
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   Sarfraz    15 年前

    这个 PHP UTF-8 cheatsheet 是显示不同语言内容的好教程。

        2
  •  0
  •   rahim asgari    15 年前

    <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=charset_name">
    

    charset_name的位置 gb2312 big5 utf-8

        3
  •  0
  •   Trott    15 年前

    我在使用喜鹊和史努比时遇到了类似的问题。在获取RSS之前,我不得不添加一行这样的行:

    define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
    

    否则,我得到的是问号,而不是巧妙的引号,在这一点上,再多的操心字符集将无法修复它。

    不确定这是否行得通,但您可能需要尝试向Snoopy中的$rawheaders数组添加一个“Aceept Charset”头。

    推荐文章