问题描述
我们有一个在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 (将#修改为@)