【问题标题】:Is storing URL-encoded text in the database a good idea?在数据库中存储 URL 编码的文本是个好主意吗?
【发布时间】:2010-11-10 22:33:02
【问题描述】:

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

【问题讨论】:

    标签: mysql database text encoding character


    【解决方案1】:

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

    【讨论】:

    • 因为一些有问题的字符不是UTF-8,而是UTF-16,MySQL 5不支持。当试图通过 JDBC 存储这些字符时,它们被存储为“?”当尝试通过 MySQL Administrator 执行此操作时,它会引发异常。
    【解决方案2】:

    不错的主意。

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

    另外,VARBINARY 数据类型是否有可能避开这个问题? (我可以自己谷歌这部分,但是已经很晚了,我很困。只是帮助头脑风暴,现在睡觉。)

    【讨论】:

    • 你说得对,需要想出一种编码/解码所有东西的方法,我会考虑一种实现它的方法。我考虑过使用 VARBINARY 和 BLOB 字段,但无法对这些类型进行全文搜索。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 2011-12-03
      • 2019-05-25
      • 2017-10-05
      • 1970-01-01
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多