【发布时间】:2012-09-26 21:44:48
【问题描述】:
我在搜索 MySQL 数据库时遇到问题。数据库排序规则为utf8_general_ci,表排序规则为latin1_swedish_ci。我的问题是这样的:
用户条目存储为(保护隐私的假名)T'quila Smith,真实名称为T'quila Smith。
我的 Web 应用程序需要能够按名称正确搜索该用户,但搜索的名称为 T'quila,而不是 T'quila。我尝试过使用$student_name = str_replace("'", "'", $student_name);,它(在使用echo 测试时)会按应有的方式打印出T'quila。但是,数据库无法通过该搜索在数据库中找到该用户。
任何人都可以提供一些帮助吗?我一直不知道该怎么做。我已经研究了字符集(我认为这可能是问题),但我似乎无法让它工作。非常感谢任何可以帮助我的人!
【问题讨论】:
-
您说史密斯先生的姓名以实体形式存储在表中(使用 ' 而不是撇号)。你怎么知道?如果您搜索
WHERE NAME LIKE '%39%'会发生什么?当您搜索WHERE NAME LIKE '%\'%'时会发生什么?WHERE NAME LIKE '%Smith'怎么样?史密斯先生的名字会在这些情况下出现吗?注意:我不建议您在生产中使用这种搜索,而只是为了确保您知道名称中的撇号是如何存储的。这些爱尔兰风格的名字是一个臭名昭著的脖子痛。祝你好运。 -
谢谢奥利。这让我更接近获得正确的结果。我想我现在需要的只是一些时间来修改这个应用程序,我就能得到它。感谢您的帮助!
标签: php mysql web-applications utf-8 character-encoding