![](/img/trans.png)
[英]Stubborn character encoding errors when reading strings from text file (Ruby/Rails)
[英]Ruby Character Encoding Confusion When Reading Same File In Different Environments
我有一個Rails應用程序,可以接受CSV文件的文件上傳。 在Mac上本地開發功能時,嘗試解析上傳的文件時(使用Ruby的標准庫CSV),我收到“ UTF-8中無效的字節序列”錯誤。
因此,在做完一些研究並閱讀了關於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
但是隨后,我將此代碼部署到了生產Linux環境,並再次出現了“ UTF-8中無效的字節序列”錯誤。 真是個謎(無論如何對我來說)! 經過一段時間的嘗試來解決該錯誤之后,我嘗試在打開文件時刪除指定編碼的代碼。 奇跡般地,它解決了生產中的問題,但是現在本地Mac的開發已中斷。
請記住,在兩種情況下,我都是使用相同的瀏覽器上傳相同的文件。 有人對這里發生的事情有任何見解嗎?
順便說一句,紅寶石的版本很接近,但並不相同。 Mac是ruby 1.9.3-p0 ,而Linux服務器是1.9.2-p180 。 該應用程序是Rails 3.2.6 。
一些想法:
我不知道1.9.2和1.9.3之間在編碼方面的行為差異,但是我也沒有專門研究它。 MRI版本的配置也可能有所不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.