2011-05-12 24 views
3

我們從不同格式的備份恢復到新的MySQL結構(爲UTF-8支持正確設置)。我們在瀏覽器中顯示了奇怪的字符,但我們不確定它們的名稱,因此我們可以找到他們翻譯的主要列表。錯誤的MySQL導入,現在我們有垃圾顯示,而不是UTF-8字符

我注意到,他們確實與特定字符相關。例如:

â„¢ always translates to ™ 
â€」 always translates to — 
• always translates to · 

我引用了這篇文章,這讓我開始了,但這遠不是一個完整的列表。要麼我沒有搜索正確的名稱,或者作爲參考不存在的這些不良轉換的「主列表」。

參考: Detecting utf8 broken characters in MySQL

此外,嘗試通過MySQL查詢進行搜索的時候,如果我搜索了,我總是讓MySQL把它當作一個「a」。有什麼辦法來調整我的MySQL查詢,以便他們更多的文字搜索?我們不使用國際化,所以我可以放心地假設任何包含字符的字段都被認爲是有問題的條目,這需要我們正在構建的「fixit」腳本來補救。

回答

2

而不是設計一個「fixit」腳本來通過並替換這些數據,我認爲最好是直接解決問題。看起來這些數據最初是以不同於UTF-8的格式存儲的,所以當您將它放入設置爲UTF-8的表中時,它會將文本亂碼。如果有機會,請返回原始備份以確定數據存儲的格式。如果不能這樣做,則可能需要進行一些試驗和錯誤以確定數據的格式但是,一旦你知道,轉換很容易。閱讀關於修復下面的文章的部分:

http://www.istognosis.com/en/mysql/35-garbled-data-set-utf8-characters-to-mysql-

基本上你要列設置爲BINARY,然後將其設置爲原始字符集。這應該使文本顯示正確(一個很好的檢查,知道你使用正確的字符集)。完成後,將列設置爲UTF-8。這將正確地轉換數據,它將糾正您當前遇到的問題。

相關問題