0

ziprubyを使用すると、ディスクに書き込まずにZIPアーカイブを簡単に作成できます。文字列を取得してアーカイブエントリとして追加し、最終的にアーカイブ全体を文字列として取得できます。次に、そのようなアーカイブを期待しているWebサービスへの添付ファイルとして送信できます。これは、1つの例外を除いて、まさに私が必要としているものです。アーカイブ内のファイルはUS-ASCIIでエンコードされているのに対し、WebサービスはUTF-8でエンコードされているファイルについて非常に厳密です。

zipruby(または、一時ファイルを使用できないRuby用のツールは見つかりませんでしたが、同等のツール)を取得して、これらのアーカイブエントリをUTF-8としてエンコードする方法はありますか?

zipped_data = ''
Zip::Archive.open_buffer zipped_data, Zip::CREATE do |archive|
  archive.add_buffer 'file1.xml', xml1.encode('UTF-8')
  archive.add_buffer 'file2.xml', xml2.encode('UTF-8')
end

テストするためzipped_dataに、をファイルに書き込んでから解凍すると、エンコーディングが間違っていることがよくわかります。

$ file -bi file1.xml
application/xml; charset=us-ascii
4

1 に答える 1

2

これはおそらく、utf8 として識別するためのマルチバイト文字がファイルにないことを意味します。つまり、ASCII 文字のみを含む utf8 でエンコードされたファイルは、ASCII として識別される必要があります。

于 2012-08-15T02:10:55.643 に答える