【发布时间】:2012-06-27 05:09:25
【问题描述】:
我有一个接受 CSV 文件上传的 Rails 应用程序。在我的 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 开发被破坏了。
请记住,在这两种情况下,我都是使用同一个浏览器上传同一个文件。有没有人知道这里发生了什么?
顺便说一下,ruby 的版本很接近,但不一样。 Mac 是 ruby 1.9.3-p0,Linux 服务器是 1.9.2-p180。该应用是 Rails 3.2.6。
【问题讨论】:
-
您是否尝试过运行相同的 ruby 版本(这通常是个好主意)。
标签: ruby-on-rails ruby character-encoding