我正在尝试将二进制字段转换为文本,以便我可以将其输出到文件中。内容是XML。到目前为止,我有......
File.open("public/test.txt", 'w') { |file| file.write(@report.catalog_xml) }
错误抱怨从ASCII-8BIT到UTF-8的“\ xAC”。我已经尝试了Marshal和Yaml转储,但仍然无法将纯文本作为输出
答案 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) }