Symfony 2中奇怪的编码行为

时间:2014-02-07 16:06:26

标签: json symfony jmsserializerbundle

我正在使用Symfony和JMS Serializer Bundle为应用程序开发一个简单的REST API。我有一些网址 - 例如/api/answers/{id}。现在的问题是,如果我调用id为1的URL,一切都像魅力一样,当我用id = 2,3,4来调用它时... JSON内容编码不正确。

后端脚本看起来像这样(这只是我将重构的原型):

    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,配置中的每一位也都设置为utf8。

PS:我用print_r打印了$ answers变量,并且它的编码也不正确,所以我认为问题出在事物的学说方面。你怎么看?真正奇怪的是它适用于id = 1。请注意,我查看phpmyadmin,文本也很好。

谢谢。

1 个答案:

答案 0 :(得分:0)

我解决了。问题是页面上的编码是不同的,即使我在Symfony中将其设置为UTF8。我不得不在Content-Type标头中手动设置它以使其工作。