1

目前我正在编写这样的文件:

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。

4

0 回答 0