2009-07-15 54 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的選項。

相關問題