2009-07-15 51 views
1

我需要在MySQL数据库中存储(可能很长)的文本。文本可能包含特殊字符和非拉丁字母,应该可以对其进行全文搜索。 MySQL 5不能存储这样的字符(但在MySQL 6中是可以的),所以我在存储它之前对URL进行了URL编码,并在取出之后对其进行解码。 你认为这是一个好主意吗?有人做过这样的事吗?你有其他解决方案吗?是否在数据库中存储URL编码的文本是一个好主意?

回答

0

不是一个坏主意。

而不是(仅)在提取后进行解码,您还应该计划一个进程在构建搜索查询之前对任何搜索词进行网址编码。如果您的应用端逻辑具有通过编码/解码过程过滤所有数据的使用功能,那么您不应该有任何错误漏洞通过裂缝。

另外,VARBINARY数据类型可能会避免这个问题吗? (我可以谷歌这部分我自己,但它是晚,我困了就在帮助集思广益,睡前现在。)

+0

你是对需要想出一种方法来编码/解码所有东西,我会考虑一种实现它的方法。 我想过使用VARBINARY和BLOB字段,但不可能对这些类型进行全文搜索。 – Gabriel 2009-07-16 10:20:53

1

为什么不使用Unicode,用编码UTF8 - MySQL 5 supports it

+1

由于一些有问题的字符不是UTF-8,而是MySQL 5不支持的UTF-16。 当试图通过JDBC存储这些字符时,它们被存储为'?'当试图通过MySQL Administrator来执行时,它会引发异常。 – Gabriel 2009-07-16 10:09:20

0

MySQL的Unicode的全文搜索是智能足以在搜索“a”时搜索相关字符,如“á”和“ä”。所以,我不会存储URL编码的文本,但使用MySQL的选项。

相关问题