我正在使用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,文本也很好。
谢谢。
答案 0 :(得分:0)
我解决了。问题是页面上的编码是不同的,即使我在Symfony中将其设置为UTF8。我不得不在Content-Type标头中手动设置它以使其工作。