2009-07-15 10 views
1

私は、(おそらく長い)テキストをMySQLデータベースに格納する必要があります。テキストには特殊文字や非ラテン文字が含まれている可能性があり、その上で全文検索を行うことが可能でなければなりません。 MySQL 5はそのような文字を格納することはできませんが(MySQL 6でも可能です)、テキストを格納する前にURLエンコードを行い、取り出した後にデコードします。 あなたはそれが良い考えだと思いますか?誰かがそれのような何かをしましたか?代わりの解決法がありますか?データベースにURLエンコードされたテキストを格納するのは良い考えですか?

答えて

0

悪い考えではありません。

フェッチ後にデコードするのではなく、検索クエリを作成する前に任意の検索語をURLエンコードするプロセスを計画する必要があります。アプリ側のロジックにエンコード/デコード処理ですべてのデータをフィルタリングする使用機能がある場合は、クラックからの不正使用があってはなりません。

また、VARBINARYデータ型で問題が解決される可能性はありますか? (IでしGoogleのこの部分自身が、それは後半だと私は眠いちょうど今ブレーンストーミング、就寝時に役立ちます。。)

+0

すべてをエンコード/デコードする方法を考え出す必要があると思いますが、実装する方法について考えるつもりです。 VARBINARYフィールドとBLOBフィールドの使用について考えましたが、これらのタイプの全文検索はできません。 – Gabriel

1

なぜUnicodeを使用していないが、UTF8でエンコード - MySQL 5 supports it

+1

問題のある文字の中には、UTF-8ではなく、MySQL 5がサポートしていないUTF-16があるためです。 このような文字をJDBCで保存しようとすると、 '?'として保存されます。 MySQL Administratorを使って操作しようとすると例外がスローされます。 – Gabriel

+0

UTF-16からUTF-8に単純にトランスコードできませんか? –

0

MySQLのUnicodeのフルテキスト検索がスマートです"a"を検索するときに "á"や "ä"のような関連する文字を検索するのに十分です。だから、URLエンコードされたテキストは保存しませんが、MySQLのオプションを使用します。

関連する問題