私は、バイナリ データで ruby を使用することにあまり慣れていません。mechanize を使用して多数の csv ファイルをローカル ディスクにダウンロードしています。次に、これらのファイルで特定の文字列を検索する必要があります。
mechanize で save_as メソッドを使用してファイルを保存します (ファイルをバイナリとして保存します)。ファイルのコンテンツ タイプ (mechanize による) は次のとおりです。
application/vnd.ms-excel;charset=x-UTF-16LE-BOM
ここから、ファイルの読み方がわかりません。Rubyで通常のファイルとして読み込もうとしましたが、バイナリデータしか取得できません。また、標準の UNIX ツール (strings/grep) を使用して検索を試みましたが、うまくいきませんでした。
ファイルの 1 つで「file」コマンドを実行すると、次のようになります。
foo.csv: Little-endian UTF-16 Unicode Pascal program text, with very long lines, with CRLF, CR, LF line terminators
catまたはviでデータを問題なく見ることができます。vi では、いくつかの制御文字も表示されます。
また、csv と fastcsv の両方の Ruby ライブラリを試しましたが、これらに対して「IllegalFormatError」例外が発生します。私も運なしでこの解決策を試しました。
どんな助けでも大歓迎です。ありがとう。