JMSSerializer和UTF-8编码错误(Symfony2.4)

时间:2014-04-19 13:19:20

标签: php symfony utf-8

我有REST api,它返回任务/公司/笔记/等。在localhost上工作正常,无论我写什么任务描述或公司名称,但我把我的应用程序放在服务器上,当我使用像“łźążćę”这样的标志时出现错误Your data could not be encoded because it contains invalid UTF8 characters." at app/endor/jms/serializer/src/JMS/Serializer/JsonSerializationVisitor.php line 36

数据库是相同的,表也是如此,所有配置选项都是相同的。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

当我使用@VirtualProperty和使用 substr(str,start,length)函数剪切字符串的方法时,我遇到了同样的错误。 如果您使用UTF8,此功能是不好的选择。相反,请使用 mb_substr

答案 1 :(得分:0)

我有一个类似的问题,正如您在我的问题中所看到的:Symfony2 & FOSRestBundle: Getting UUID packed in a BINARY(16) field from MySQL

我设法表示在日志中将二进制字段转换为HEX,但FOSRestBundle仍然返回相同的异常。

与您的任何改进?

答案 2 :(得分:0)

通过设置数据库连接属性以使用UTF-8字符集传输数据,我找到了解决此问题的方法。这就是我doctrine

app/config/config.yml部分的样子
doctrine:
    dbal:
        default_connection: default

        connections:
            default:
                driver:   %database_driver%
                dbname:   %database_name%
                user:     %database_user%
                host:     %database_host%
                password: %database_password%
                charset:  UTF8
                options:
                    1002:  "SET NAMES 'UTF8'"

答案 3 :(得分:0)

我有相同的错误消息,仅在生产中。事实证明,数据库中的一行包含了序列化程序无法处理的字符¨,(U + 00A8)。

删除角色解决了问题。