我有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.yml
中doctrine
部分的样子
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),序列化程序无法处理该字符。
删除字符解决了问题。