1

好的,我正在尝试将数据从 Android 应用程序存储在 MySQL 数据库中。我使用 PHP 作为两者之间的过渡。

我提交给数据库的是这个(例如):Sakè

MySQL中存储的是:Sakè

当我在 Android 中打印出该行时,它知道要转换回:Sakè

问题是,当我执行某些选择语句时,是的,它基本上不会像它应该的那样工作。有什么办法可以保持一致吗?

只是 MySQL 中的一个注释:我使用 utf8_general_ci

4

1 回答 1

4

您需要为PHP 脚本的数据库连接强制使用正确的字符。最简单的方法是执行此查询:

SET NAMES 'utf8';

一次,最好在你之后connect()。如果您使用 Zend Framework,只需添加以下内容:

resources.db.params.charset  = UTF8

到您的 application.ini。对于 mysqli,请参见set_charset()。如果您使用其他任何东西,请查看文档以获取类似内容。如果什么都没有,这个SET NAMES把戏总是有效的。

一个重要的注意事项- 根据您将数据放入数据库的方式,您的数据库内容很可能需要修复,因为它在INSERTs 期间被损坏的字符集损坏。因此,即使您SET NAMES现在这样做,您很可能仍然会看到显示错误的旧数据。但具有讽刺意味的是,好的——你现在显示一切都很好,但数据本身已经坏了。您现在需要修复您的数据(只需重新插入即可)。

于 2012-09-12T21:20:07.047 回答