Ruby on rails 将二进制文件转换为文本,以便写入文件

Ruby on rails 将二进制文件转换为文本,以便写入文件,ruby-on-rails,Ruby On Rails,我正在尝试将二进制字段转换为文本,以便将其输出到文件中。内容是XML。到目前为止我已经 File.open("public/test.txt", 'w') { |file| file.write(@report.catalog_xml) } 该错误抱怨从ASCII-8BIT到UTF-8的“\xAC”。我尝试了封送处理和Yaml转储,但仍然无法将纯文本作为输出您需要指定目标文件的编码以匹配数据源的编码。假设#catalog_xml返回一个字符串,您可以如下确定: @report.catalog_

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

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

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

您需要指定目标文件的编码以匹配数据源的编码。假设
#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) }

尝试
wb
而不是
w
。请显示
put@report.catalog\u xml.encoding的输出