目前我正在写这样一个文件:
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's working draft似乎Blob在编写之前将DOMStrings转换为UTF-8。