PHP关于编码的问题(latin_swedish_ci与utf8_unicode_ci)


PHP question on encoding (latin1_swedish_ci vs utf8_unicode_ci)

我有一个关于编码的问题。在我的MySQL数据库中,我用latin_swedish_ci对用户进行了编码(坏主意)。现在,我将我的iPhone应用程序连接到Facebook,并检索朋友的姓名列表,我想看看我的应用程序中是否已经有这些朋友。遗憾的是,当我尝试进行查询时,我得到了这个错误:

#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_unicode_ci,COERCIBLE) for operation 'like' 

所以基本上,我试着把Facebook朋友的名字(在utf8中)和我的dabatase(拉丁语1)中的名字混合在一起。

我不想将整个数据库迁移到utf8,我只是想知道在PHP中是否可以检查名称编码是否与latin1兼容,或者至少是否可以在latin1中编码所有名称并进行查询,如果不能,则跳过名称。

你们中有人知道是否有可能做这样的事情吗?谢谢,

Masiar

不完全确定你是如何通过搜索框或其他方式在应用程序中寻找朋友的?PHP脚本的作用是什么?

但是我认为您可以通过在连接到数据库时指定字符集和排序规则来解决这个问题。顺便说一下,我假设您使用的是MySQL。

每次建立DB连接时运行以下3个查询,不过我认为前2个查询可能就足够了。

SET character_set_connection = utf8
SET character_set_client = utf8
SET character_set_results = utf8