Php JMSSerializer和UTF-8编码错误(Symfony2.4)
我有一个REST api,它可以返回任务/公司/注释等。在本地主机上,无论我写的是什么任务描述或公司名称,它都可以正常工作,但我将我的应用程序放在服务器上,当我使用诸如“łźążęę”之类的符号时,会出现错误Php JMSSerializer和UTF-8编码错误(Symfony2.4),php,symfony,utf-8,Php,Symfony,Utf 8,我有一个REST api,它可以返回任务/公司/注释等。在本地主机上,无论我写的是什么任务描述或公司名称,它都可以正常工作,但我将我的应用程序放在服务器上,当我使用诸如“łźążęę”之类的符号时,会出现错误您的数据无法编码,因为它包含无效的UTF8字符。“在app/endor/jms/serializer/src/jms/serializer/JsonSerializationVisitor.php第36行 数据库和表都相同,所有配置选项都相同。如何解决此问题?我有一个类似的问题,您可以在我的
您的数据无法编码,因为它包含无效的UTF8字符。“在app/endor/jms/serializer/src/jms/serializer/JsonSerializationVisitor.php第36行
数据库和表都相同,所有配置选项都相同。如何解决此问题?我有一个类似的问题,您可以在我的问题中看到: 我已经设法在日志中将二进制字段转换为十六进制,但是FOSRestBundle仍然返回相同的异常
您有什么改进吗?我找到了解决这个问题的方法,将数据库连接属性设置为使用UTF-8字符集传输数据。这就是我的
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'"
我有同样的错误信息,只是在生产中。结果表明,数据库中有一行包含字符
¨,(U+00A8),序列化程序无法处理该字符
删除字符解决了问题。我在使用@VirtualProperty方法时遇到了相同的错误,该方法使用substr(str,start,length)函数剪切字符串。
如果使用UTF8,则此函数是错误的选择。相反,请使用mb\u substr