目前我正在编写这样的文件:
var blob = new Blob([contents], {type: 'text/plain;charset=iso-8859-1'});
fileWriter.write(blob);
但是,当我file -i
在结果文件上运行时,字符集始终是 UTF-8。
该变量contents
在服务器端以 ISO-8859-1 编码,然后在 base64 中通过线路进行通信:
def write_csv_file
filewriter = RMS::LabelFile.for_order(self.order)
csv = filewriter.to_csv
csv = csv.encode("ISO-8859-1")
csv = Base64.encode64(csv)
%Q{<script type="text/javascript" charset="ISO-8859-1">
var csv_data = #{csv.inspect.gsub('\n', '')};
csv_data = window.atob(csv_data);
parent.phn.filewriter.writeFile("#{self.order.order_number}.csv", csv_data, 'ISO-8859-1');
</script>
}
end
我已经检查并仔细检查了javascript中客户端的编码仍然是ISO-8859-1。似乎 Blob 和 fileWriter 在写入之前正在更改编码。检查W3C 的工作草案似乎 Blob 在编写 DOMStrings 之前将其转换为 UTF-8。