2014-02-07 70 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头文件中手动设置它才能使其工作。