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


JMSSerializer and UTF-8 encoding error ( Symfony2.4 )

我有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

数据库是一样的,表也是一样的,所有的配置选项都是一样的。我该怎么解决这个问题?

当我将@VirtualProperty与用substr(str,start,length)函数剪切字符串的方法一起使用时,我也遇到了同样的错误。如果使用UTF8,此功能是一个糟糕的选择。相反,请使用mb_substr

我找到了解决这个问题的方法,将数据库连接属性设置为使用UTF-8字符集传输数据。这就是我的app/config/config.ymldoctrine部分的样子

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'"

我也有类似的问题,您可以在我的问题中看到:Symfony2&FOSRestBundle:从MySQL中获取打包在BINARY(16)字段中的UUID。

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

你的有什么改进吗?

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

删除字符解决了问题。