2012-07-23 23 views
9

所以我試圖從網站下載一個zip文件,並將該數據放入表中。下載一直在工作,但突然間,它不再是了。我從ASCII-8BIT到UTF-8(Encoding :: UndefinedConversionError)問題得到了一個「寫入」:「\ xB6」。很奇怪,自從我上次運行腳本以來沒有任何變化。這是有問題的代碼的一部分。我正在使用一個允許我在zip文件中解析DBF文件的gem。編碼未定義的轉換錯誤 - Ruby on Rails,寫入時出錯

下面的代碼:

`write': "\xB6" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) 

感謝您的幫助

更新:我軌內運行,效果顯着。我在rails環境之外運行腳本,它運行良好。所以Rails在寫入過程中會干擾某種方式。

更新2:已解決 - 我將「w」更改爲「wb」,顯然這是由rails 3+引起的。以前沒有發生過我試過這個。希望這可以幫助其他人。

回答

2

你也許還可能通過傳遞

:output_encoding => "binary" 

File.open,我認爲會做同樣的事情模式「WB」,或許更清楚地做到了。但搞清楚'wb':)的好工作。

是的,在紅寶石1.9中,這是字符編碼意識,你經常需要告訴不同的事情有關你想要的編碼,包括「空編碼」「二進制」。

這是可能的Rails正在設置Encoding.default_external爲UTF-8,和File使用Encoding.default_external,這也可能會被導軌爲什麼相較於未形軌道有差別。

ruby​​ 1.9中的編碼問題肯定會非常快速地產生混淆,很多通常隱藏的狀態會影響到發生的事情。

相關問題