如何使用Chrome的File API在ISO-8859-1中编写文件

时间:2013-05-25 22:22:47

标签: javascript ruby character-encoding w3c html5-filesystem

目前我正在写这样一个文件:

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。

0 个答案:

没有答案