2011-05-19 29 views
0

我最近部署了我的應用程序。對於開發,我使用SQLite,一切都是正確的。我有一個控制器,它使用Nokogiri將數據填充到我的數據庫中。從SQLite切換到MySQL後,我能做些什麼來解決編碼問題?

問題是在生產我使用的是MySQL而不是SQLite,現在我的腳本正在用錯誤的編碼填充數據。

例如,它寫入"Aragón"而不是"Aragón"。 MySQL對數據庫和每個表都使用utf8。

+0

一些調試後,現在我相信問題並不在DB,引入nokogiri正在讀錯了字,但是這種情況只是在生產服務器。 – 2011-05-19 19:20:12

回答

0

Nokogiri可能正確地返回東西。我懷疑你在用Nokogiri解析的內容的字符集和數據庫中有不匹配的地方。

正在解析的數據可能是ISO-8859-1或WIN-1252,這是互聯網上最常見的。您需要查看數據以瞭解其聲明的內容。同時查看單詞"Aragón"的來源並查看它是否嵌入了高位字符或實體編碼字符。通過查看重音字符的值,您還可以在對字符進行編碼時獲得想法。

好處是它們不是UTF8,所以當Nokogiri將它們傳遞給寫入數據庫的代碼時,它們將是錯誤的。

要解決這個問題,您需要告訴Nokogiri編碼是什麼,或者在存儲之前將文本轉換爲UTF-8。

相關問題