将URL编码的文本存储在数据库中是一个好主意吗?

4

我需要在MySQL数据库中存储(可能很长的)文本。文本可能包含特殊字符和非拉丁字母,并且应该可以对其进行全文搜索。MySQL 5无法存储此类字符(但在MySQL 6中将有可能),因此我考虑在存储文本之前对其进行URL编码,并在获取后解码。

你认为这是一个好主意吗?有人做过类似的事情吗?你有其他解决方案吗?

3个回答

1

1
由于一些有问题的字符不是UTF-8,而是UTF-16,MySQL 5不支持它们。当尝试通过JDBC存储这些字符时,它们会被存储为“?”;当尝试通过MySQL管理员进行存储时,它会抛出异常。 - Gabriel

0

不错的想法。

除了在获取后仅解码之外,您还应该规划一个过程,在构建搜索查询之前对任何搜索词进行URL编码。 如果您的应用端逻辑具有通过编码/解码过程过滤所有数据的使用函数,则不应该出现任何误用。

此外,VARBINARY数据类型是否可以避免问题?(我可以自己在Google上搜索这部分,但现在很晚了,我很困。只是帮忙头脑风暴,睡觉时间到了。)


关于需要想出一种编码/解码一切的方法,你是正确的,我会思考一种实现方式。我考虑使用VARBINARY和BLOB字段,但这些类型无法进行全文搜索。 - Gabriel

0
MySQL的Unicode全文搜索功能非常智能,可以在搜索"a"时搜索相关字符,如"á"和"ä"。因此,我不会存储URL编码的文本,而是使用MySQL的选项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接