Rails 中的 Spreadsheet.open 给出此错误“未知编码名称 - MACINTOSH”

Posted

技术标签:

【中文标题】Rails 中的 Spreadsheet.open 给出此错误“未知编码名称 - MACINTOSH”【英文标题】:Spreadsheet.open in Rails gives this error "unknown encoding name - MACINTOSH" 【发布时间】:2013-03-22 08:42:23 【问题描述】:

我正在使用电子表格来解析 xls 文件。它工作得很好。但是今天我的一个用户上传了一个文件,并且收到错误“未知编码名称 - MACINTOSH”

我的代码是: book = Spreadsheet.open file_path sheet1 = book.worksheet 0

这是出现错误的 excel 文件: https://www.dropbox.com/s/jv37pk5rpiy9259/testlisttextnonames2.xls

你们能帮我解决这个问题吗?

【问题讨论】:

我在一个简单的 Ruby 脚本上遇到了同样的错误,并在 Google 上找到了这个问题。希望有人能回答。 【参考方案1】:

遇到同样的问题。这是我能推断出的最好的:

“Macintosh”不是 Ruby 1.9+ 中的已知编码。尝试打开控制台并运行“Encoding.find('Macintosh')”。你会得到同样的错误。

那么什么是可用的?在控制台中:“Encoding.list”。选项之一是 MacRoman。我猜这是紧随其后的。

因此,如果我们将 lib/spreadsheet/excel/internals.rb 中 10000 和 32768 的映射更改为映射到“MACROMAN”,它应该可以工作。

在本地测试过。

我打开了一个拉取请求:https://github.com/zdavatz/spreadsheet/pull/51

一些参考链接: * https://en.wikipedia.org/wiki/Mac_OS_Roman * http://bugs.python.org/issue843590

【讨论】:

以上是关于Rails 中的 Spreadsheet.open 给出此错误“未知编码名称 - MACINTOSH”的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法让 Roo 接受 StringIO 对象代替文件?

Rails 7中的importmap-rails,这可能吗?

如何使用 ajax-datatables-rails 理解 Rails 中的包含

如何在 Webpacker 中使用 Rails Url 助手/Rails 5.1 中的 React-rails

Rails 3 中的 Restful API

努力优化 Rails WHERE NOT IN 在 Rails 中的查询