首页 > 解决方案 > 带有 Symfony4 序列化编码的 JMSSerializer

问题描述

我的配置:Symfony 4.2.5,JMSSerialiser 3.2。我无法通过序列化获得 UTF-8 响应。我认为解决方案在配置中:

jms_serializer:
    visitors:
        json:
            options: [JSON_UNESCAPED_UNICODE]

但它不起作用,它给了我一个 UNICODE 打印。所以,我得到了这样的回应:

`"aeiou\u00e0\u00e9\u00e8\u00f4\u00fb"`

这是我的代码:

/**
* @Route("/route1",name="route1")
*/
public function route1(){
    $serializer = SerializerBuilder::create()->build();
    $chaine = "aeiouàéèôû";
    $reponse = new Response(
        $serializer->serialize($chaine, 'json'),
        Response::HTTP_OK,
        ['content-type' => 'text/html']
    );
    $reponse->setCharset('UTF-8');
    return $reponse;
}

我发现当我从 firefox 启动请求时问题消失了,它为我提供了两种显示模式:json、raw 以及用于请求和响应标头的附加选项卡。Chrome 浏览器只为我提供原始显示。我是否应该断定解决方案在于 Chrome 的配置?

标签: utf-8character-encodingjmsserializerbundlesymfony-4.2

解决方案


主题已解决。默认情况下,Chrome 会显示文件的原始表示,其中重音字符采用转义形式。要在 Chrome 中获取 json 表单,您需要安装 jsonView 扩展。激活此扩展后,重音字符的显示将正确完成


推荐阅读