0

我想把下面的问题摆在你面前。

该数据库由各种名称组成。这些名称可以包含“特殊”字符,例如 é、ê 等。

我的计划是有一个 SEO 友好的 URL,其中包含数据库中的名称。链接的创建不是什么大问题,只需使用 normalize 函数或 str_replace 函数将所有特殊字符替换为正常字符即可。

但是当我想使用 SEO 朋友 URL 查询数据库时(在必要的验证和检查之后)。由于特殊字符,数据库当然不会返回任何结果。

现在问题来了,有没有一种方法可以在没有特殊字符的情况下查询数据库,或者最好在数据库中有一个单独的列来存储没有特殊字符的名称(在创建过程中不需要清理它们链接和易于查询)。这将需要维护两列,但可以让我轻松查询数据库。

有任何想法吗?

4

2 回答 2

1

根据排序规则hôtel将等于hotel

mysql> select 'hôtel' = 'hotel';
+--------------------+
| 'hôtel' = 'hotel'  |
+--------------------+
|                  1 |
+--------------------+

您遇到的问题是您正在存储 html 实体 ( hôtel),我认为这是非常错误的,因为您将演示问题与持久性问题混为一谈。摆脱它并为您的字符集选择适当的排序规则,然后将其设置为数据库默认值或为每个查询设置它

一个适合网络使用的字符集是utf8. 要设置数据库,请执行以下操作:

create database mydatabase character set utf8 collate utf8_unicode_ci;
于 2012-09-17T23:27:00.167 回答
0

简单的方法是在 URL 中放置一个 ID,例如来自 Stackflow 的 URL。

于 2012-09-17T20:51:57.890 回答