2014-02-07 156 views
0

我正在爲使用Symfony和JMS序列化程序包的應用程序開發一個簡單的REST API。我有幾個網址 - 例如/api/answers/{id}。現在的問題是,如果我調用id = 1的URL,所有東西都像魅力一樣,當我用id = 2,3,4調用它時,JSON內容編碼不正確。Symfony 2中奇怪的編碼行爲

後端腳本看起來是這樣的(這只是一個原型,我會重構它):

public function getByQuestionIdAction($questionId) 
    { 
     $answers = $this->getDoctrine()->getRepository('B2GameBundle:Answer')->findByQuestion($this->getDoctrine() 
             ->getRepository('B2GameBundle:Question')->find($questionId)); 

     $serializer = $this->get('jms_serializer'); 

     if(!empty($answers)) 
     { 
      return Response::create($serializer->serialize($answers, 'json'), 200, array("Content-type" =>  "application/json")); 
     } 
     else 
     { 
      return Response::create(json_encode(array('error' => 'No answers for question with id ' .  $questionId . ' found!')), 404, array("Content-type" => "application/json")); 
     } 

    } 

我所有的數據庫表設置爲utf8_unicode_ci,在配置中的每個位設置爲UTF-8也是如此。 PS:我用print_r打印了$ answers變量,它的編碼也不正確,所以我想問題在於事物的學說方面。你怎麼看?真奇怪的事實是它對id = 1很好。請注意,我在phpmyadmin裏面看,文本也很好。

謝謝。

+0

你在哪個操作系統上開發?服務器在哪個服務器上運行? – ferdynator

+0

我用於開發的操作系統是Windows。服務器是本地的(WAMP)。 – michy04

+0

(Windows記事本問題)請參考這個,我也分享了這個問題,它修復了它:http://stackoverflow.com/questions/10290849/how-to-remove-multiple-utf-8-bom-sequences-before -doctype –

回答

0

我解決了它。問題是頁面上的編碼不同,即使我在Symfony中將其設置爲UTF8。我必須在Content-Type頭文件中手動設置它才能使其工作。