我有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
。
数据库是相同的,表也是如此,所有配置选项都是相同的。我该如何解决这个问题?
答案 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)。
删除角色解决了问题。