symfony2 utf8问题与控制器

时间:2015-10-27 09:43:18

标签: php json ajax symfony utf-8

在我的symfony 2应用程序中,我正在从一个yaml文件中转换控制器中的字符串,并通过ajax发送它。

然后在我的ajax函数中,我用JSON解析响应

我遇到的问题是翻译器输出的字符串不是UTF8。为什么?当我调用过滤器时,它的格式正确转换我的模板。

另外,在我的控制器中写的强调字母在UTF8中正确发送,它似乎真的来自翻译组件。

我找到的解决方法是在我的控制器中翻译后以UTF8编码,通过ajax发送,然后在javascript中解码UTF8。但它不是超级清洁加上我可以得到"这不是一个URI"错误。

如何让翻译器在控制器中输出UTF8字符串?

我的yaml:

rights:
    is_boss: Tout éditer, voir, supprimer

我的控制器:

    $message= strtolower($translator->trans('rights.is_boss', array(), 'backend_pages'));

    $response = array(
        'message' => utf8_encode($message)
    );

    return new JsonResponse($this->get('serializer')->serialize($response, 'json'));

我的观点:

        $.ajax({
            type        : 'POST',
            url         : '{{ path('manage_rights', {'associate' : associate.id }) }}',
            data: {right: right, parameter: parameter, value: value},
            dataType: 'json'
        }).done(function(response){
            response = JSON.parse(response);
            var message = decodeURIComponent(escape(response.message));
            //do stuff
        })

如果我不以UTF 8编码,我得到的错误如下:

  

您的数据无法编码,因为它包含无效的UTF8   字符。 500内部服务器错误 - RuntimeException   在   供应商\ JMS \串行的\ src \ JMS \串行\ JsonSerializationVisitor.php   在第36行 -

精度:

//This does not output a proper UTF8 string. I get an error if I try to serialize it in JSON
$message= strtolower($translator->trans('rights.is_boss', array(), 'backend_pages'));

//In my twig, this does output a correct string with accentuated chars without weird symbols
<label>{{ ('rights.is_boss') | trans }}</label>

0 个答案:

没有答案