#freeze
[[Ruby]]

ある日「Unicode+BOMつきってやつでテキスト出力」してねって話がきたの。~
よくよく聞いてみると、そうするとエクセルにポッと落とすだけで開くんだって。

サンプルをもらって確認してみたら、UTF-8(リトルエンディアン)+BOMだったのね。この形式でタブ区切りテキスト出力すれば、ぽんとエクセルに投げ込むだけでひらくっぽいのよね。

じゃあ、Rubyでやってみますか。

タブ区切りテキストの作り方は簡単だろうから、ここでは触れないわ。 s は配列で、中にはUTF-8で書かれたデータが入っているのね。outfileが出力先よ。

BOMっていうのはよくわからないけど、どうもファイルの先頭に「Unicodeだぜい」と識別するUnicode文字を埋め込むやり方みたいなのよね。

でもこれ想像つくと思うけど、たまに悪さするのよね。

たとえばコード変換でひっかかる事があるらしくて、このへん知らずにJava屋さんとかがCP932に変換しようとしてハマってる記事がたくさんひっかかるわ。こういうのは 多言語処理のおもしろエピソード(当人たちは笑えない) ってやつのひとつだから、ググッてみると面白いかも。

 open(outfile,"w:UTF-16LE") do |w|
   w.write "\uFEFF" # BOM
   w.write s.join("\n")
 end


これでイケると思うわ。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS