关于android:为什么我的mysql数据库不接受重音标记?

Why won't my mysql database accept an accent mark?

我刚刚发现了一个问题,城市名称中包含重音符号,例如洛杉矶?艾达,Pe?Asco等不会保存到我的数据库。通过查看另一个so问题的答案,对于带有php的mysql,最好的排序规则是什么?我尝试将数据库和varchar的排序类型从latin1_swedish_ci更改为utf8_general_ci,但仍然拒绝使用该字符。我也尝试过使用utf8_unicode_ci,结果也差不多。

如果我去掉客户端的重音符号,我已经验证了保存是否有效,但理想情况下,我希望将其保留在其中,因为这是城市的真实名称(根据谷歌地图API)。

您使用什么排序规则类型来支持??

附加信息:使用mysql、phpmyadmin和cakephp以及Android应用程序作为客户端

谢谢你到目前为止的建议。我想这现在变成了一个棘手的问题…我注意到默认情况下没有启用utf8,所以我在app/config/database.php文件中启用了它。我把文件放回到服务器上,但还是没有成功地再试了一次。我是否需要重新部署应用程序以启动这些db config更改,或者是否需要检查应用程序的其他区域?这里是第一次使用cakephp。


排序规则只是字符排序的顺序,这是执行比较的必要步骤。它与数据的存储方式无关(除非给定的排序规则特定于某些编码)。

字符编码是将字符映射到其二进制表示形式以供存储,这决定了支持的字符集。

但是,仅仅因为数据库/表/列使用特定的字符编码,并不是故事的结尾。您还必须考虑在应用程序内部及其与其他组件(如mysql)的接口上使用的编码。

虽然它是针对PHP的,但是UTF-8的所有内容都覆盖了你需要考虑的所有事情。