我有一個Rails應用程序接受文件上傳的CSV文件。在我的Mac本地開發功能時,嘗試解析上傳文件時(使用Ruby的標準庫CSV),我收到了「UTF-8中的無效字節序列」錯誤。在不同環境中讀取相同文件時Ruby字符編碼混亂
因此,在做了一些研究並閱讀了關於StackOverflow上類似問題的一些答案之後,我嘗試使用gem來嗅探字符編碼(即CharDet),然後在通過CSV庫打開文件時,編碼。這解決了我所有的問題,生活也很好。
content = File.read(fullpath)
self.file_encoding = CharDet.detect(content)['encoding']
CSV.table(fullpath, :encoding => file_encoding, :header_converters => :downcase).headers
但後來我「的UTF-8無效字節序列」錯誤與部署此代碼到生產Linux環境,並一次。多麼神祕(對我來說)!經過一段時間的嘗試解決錯誤,我試圖刪除打開文件時指定編碼的代碼。奇蹟般地解決了生產中的問題,但是現在當地的Mac開發已經破裂。
請記住,在這兩種情況下,我使用相同的瀏覽器上傳相同的文件。有沒有人對這裏發生的事情有所瞭解?
順便說一句,紅寶石的版本接近,但不一樣。 Mac是ruby 1.9.3-p0,而Linux服務器是1.9.2-p180。該應用程序是Rails 3.2.6。
你有沒有試過運行相同的紅寶石版本(這通常是一個好主意)。 –