如何将ascii-8bit文件数据转换为可读字符串

时间:2014-06-12 01:20:04

标签: ruby-on-rails ruby csv character-encoding

我正在尝试通过Dropbox Core api从我的保管箱解析CSV文件的内容(保存在Windows Excel上然后上传到保管箱)。

我使用以下代码创建了一个rake任务(Rails应用程序的一部分),它在我的本地硬盘驱动器上创建了一个magnum-opus.csv文件,该文件在Excel文件中包含原始文本。通过调用contents.encoding

,内容的编码是ASCII-8BIT
contents, metadata = client.get_file_and_metadata('/magnum-opus.csv')
open('magnum-opus.csv', 'w') {|f| f.puts contents }

我想将“内容”中的二进制数据动态转换为可读文本而不是创建本地文件,而是通过它进行解析。我不想将它保存在任何地方,然后必须打开它。

我该怎么做?

如果

p contents

我最终得到某种类型的不可读数据格式...... \ x00e \ x00d \ x00u

1)如何将其转换为我可以使用Ruby解析的字符串? 2)我想知道的另一件事 - 如果:

puts contents

CSV文件中人类可读的原始文本输出到STDOUT。什么是做什么?

我试过了:

calling CSV.parse on contents.encode( "UTF-8", "binary", :invalid => :replace, :undef => :replace, :replace => '') but end up getting an error such as

CSV :: MalformedCSVError:不带引号的字段不允许\ r或\ n

0 个答案:

没有答案