将二进制转换为文本,以写入文件

时间:2014-11-03 18:30:57

标签: ruby-on-rails

我正在尝试将二进制字段转换为文本,以便我可以将其输出到文件中。内容是XML。到目前为止,我有......

File.open("public/test.txt", 'w') { |file| file.write(@report.catalog_xml) }

错误抱怨从ASCII-8BIT到UTF-8的“\ xAC”。我已经尝试了Marshal和Yaml转储,但仍然无法将纯文本作为输出

1 个答案:

答案 0 :(得分:2)

您需要指定目标文件的编码以匹配数据源的编码。假设#catalog_xml返回一个字符串,您可以确定如下:

@report.catalog_xml.encoding.name // => (e.g. ASCII-8BIT)

有了这些知识,只需在写入文件时指定它:

File.open("public/test.txt", "w:ASCII-8BIT") { |file| file.write(@report.catalog_xml) }

您甚至可以插值:

File.open("public/test.txt", "w:#{@report.catalog_xml.encoding.name}") { |file| file.write(@report.catalog_xml) }