可能只有某些字段将utf8mb4与Laravel,Doctrine和MySQL一起使用?

问题描述

我们有一个在MySQL 5.6上运行Laravel 5.6的应用程序。我们还无法升级。我们希望通过以某种形式接受“特殊字符”来解决问题,但尚未升级MySQL。

我已经更改了选择的相关列的排序规则和字符集,并且还尝试更新整个表,尽管其他列仍是mysql的“ utf8”(又名utf8mb3)...但特殊字符并未保留。我们正在获取mojibake(“乱码是由于使用非预期字符编码对文本进行解码而导致的结果”),例如,当我们应有?Ḇ??٤ḞԍНǏ?ƘԸⲘ?০Ρ?Ɍ?ȚЦ?Ѡ?ƳȤѧᖯć?ễ??Ⴙ???ļṃʼnо??ᵲꜱ?ừ?ŵ??ź时,我们会得到????Ḇ????????٤ḞԍНǏ????ƘԸⲘ????০Ρ????Ɍ????ȚЦ????Ѡ

“特殊字符”(?Ḇ??٤Ḟ…)从前端传递到后端—完整,然后在后端完整传递—因为堆栈将信息设置为Doctrine Entity属性的值-仍然完好无损。然后,理论坚持了信息……随着我们深入到ORM的较低层次,事情变得复杂了。我还没有对它进行过如此深入的调试,但是可能不得不这样做,因为到目前为止,数据库保存的是mojibake,而不是完整的“特殊”字符。

我还在相关的Doctrine实体的属性声明中添加了字符集和排序规则可选值。

Laravel的数据库配置也具有字符集和排序规则设置,但是尽管我确实需要utf8mb4来处理这几个字段,但其余字段仍在使用utf8mb3,所以我不确定设置laravel配置值可能会如何影响事情。

我尝试了各种设置的排列,但还没有全部。但是,几天以来,我想发布这个问题,以希望其他人可以得到一些有用的建议或信息链接。我发现了有关将您的应用程序或数据库转换为utf8mb4的有用信息,但没有像我在这里尝试的那样“部分转换”的任何信息。

所以,我的问题是:以前有人在这里遇到过吗?尝试仅设置一些字段以使用utf8mb4而不升级所有内容?

我没有一个易于复制的失败示例,但是如果需要,可以在几天内产生一个。

否则,感谢您的阅读。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...