我有一個包含不同語言數據的數據庫。有些語言使用口音(如áéíóú),我需要搜索這些數據,因爲口音不存在(搜索'campeon'應返回'campeón'作爲valir結果)。在有問題的數據庫上對口音進行不敏感搜索
問題是我的數據庫中的表(utf8_unicode_ci)沒有存儲utf8字符。如果通過的phpmyadmin看到的數據與口音的話是這樣的:campeón
一些經過研究,我發現(在StackOverflow question),這個問題關係到一個組名稱的不存在性[charset]。事實上,我做了一些測試,如果我將名稱設置爲utf8,則所有內容都按預期工作。
那麼,我有解決方案,有什麼問題?問題在於數據庫正在生產中,因此數據庫中有數千個字符串。如果我更改客戶端將使用的字符集,則所有已存在的字符串將變爲無效。問題是:有什麼辦法可以:
- 在使用像我這樣的錯誤字符集的數據庫中執行不區分重音的搜索?
- 將表中的數據安全地轉換爲適當的字符集?
- 繼續使用數據庫中的混合字符集(latin1和utf8),假設latin1數據不會不區分重音?
如果任何人有任何解決方案的經驗,我建議或有一個新的,我會非常感謝,如果分享。
您確信phpmyadmin不會屠殺數據嗎?我個人不會相信它...... – sarnold 2012-03-14 09:52:21
我也在命令行上測試過(mysql命令),結果是一樣的 – Ivan 2012-03-14 10:10:07