电子表格 - 读取西里尔字符的编码问题

时间:2011-04-22 14:53:11

标签: ruby-on-rails ruby encoding spreadsheet xls

我正在为一家小商店开发一个rails应用程序。它需要加载.xls文件,解析它并加载到数据库。 我使用Spreadsheet gem来处理文件。 问题是该文件包含俄语字符,显示为“└ÛÛ.ExTH-1727F(ÓÝÓÙ¯ÒGPT304)”

参考文献说,我需要指定编码,但我不知道在这个文件中使用了哪一个。我试过“win-1251”,但它给了我一个关于无法找到“utf-8 to win-1251转换器”的错误

我将编码设置为“WINDOWS-1251”,但它给了我这个错误:

U+00BE to WINDOWS-1251 in conversion from CP850 to UTF-8 to WINDOWS-1251

然后我尝试了CP850,它没有抛出错误,但字符仍然不可读。

真的没有太多代码。

# -*- encoding : utf-8 -*-
...
def show
    require 'spreadsheet'
    Spreadsheet.client_encoding = 'UTF-8'
    book = Spreadsheet.open 'c:\rails\renergy23\public\price-16-04-11.xls'
    @sheet = book.worksheet 0
end

为了简单起见,我现在不把它加载到数据库中。相反,我在我的视图中输出它:

- 30.times do |i|
    = @sheet.row i+10
    %br

http://dl.dropbox.com/u/4976861/price-16-04-11.xls

1 个答案:

答案 0 :(得分:0)

我有点在1.5个月后解决了这个问题,首先将文档保存在.xlsx中,然后将其保存在.xls(97-2003)中。由于一些奇怪的OLE signature incorrect错误,我无法使用.xlsx。