【发布时间】:2012-09-10 02:42:25
【问题描述】:
我想把以下问题摆在你面前。
数据库由各种名称组成。这些名称可以包含“特殊”字符,例如 é、ê 等。
我的计划是创建一个包含数据库名称的 SEO 友好 URL。链接的创建不是什么大问题,只需使用 normalize 函数或 str_replace 函数将所有特殊字符替换为正常字符即可。
但是当我想使用 SEO 朋友 URL 查询数据库时(在必要的验证和检查之后)。由于特殊字符,数据库当然不会返回任何结果。
现在问题来了,有没有一种方法可以在没有特殊字符的情况下查询数据库,或者最好在数据库中有一个单独的列来存储没有特殊字符的名称(在创建链接并易于查询)。这将需要维护两列,但可以让我轻松查询数据库。
有什么想法吗?
【问题讨论】:
-
在 utf-8 中做所有事情。无需特殊处理。
-
数据库为什么不返回带有特殊字符的结果?如果您使用适当的字符集,它们应该像其他任何字符集一样是可查询的(需要注意一些特殊字符特别区分大小写(Straße/Strasse))
-
请注意,数据库包含带有特殊字符的名称“hôtel”在数据库中:“hôtel”。当我查询它时,我使用查询字符串'hotel'。