Ruby で BOM 付き UTF-8 を出力する

Redmine など対応しているアプリが少ないため、まだ、 Ver. 1.8 ruby を使っているのですが、これだとスクリプトファイルは BOM 付きの UTF-8 には対応していません。(1.9 以上では対応してます)
それはそれでかまわないのですが、 ruby で BOM 付きの UTF-8 を出力したいことがあって、ちょっとやり方に迷ってしまったので、その対策方法です。

IO クラスの write 系は出力の前に文字列でなければ to_s を使って文字列に変換して出力してしまうので、バイトコードを指定して出力することはできません。
そこで、 文字列に BOM のバイトコード(0xEF 0xBB 0xBF)を格納して、変換されないようにして出力する必要があります。

def write_bom(fp)
bom = " "
bom[0] = 0xEF
bom[1] = 0xBB
bom[2] = 0xBF
fp.write(bom)
end

File.open("foo.txt", "w") {|fp|
write_bom(fp)
# 通常の出力
}

スポンサーサイト
 

Ruby アソシエーションで助成金を公募

Ruby アソシエーションで助成金を出す開発プロジェクトの公募が行われていました。
2011 年度助成金公募

金額は 50 万で、ライブラリなどの Ruby を改善するためのプロジェクトに対する助成金らしいです。
私も応募してみました。
締め切りは 11/18 なので、いいアイデアをもっている方は応募してみてはどうでしょうか。


オブジェクト指向スクリプト言語 Ruby (ASCII SOFTWARE SCIENCE Language)オブジェクト指向スクリプト言語 Ruby (ASCII SOFTWARE SCIENCE Language)
(1999/10)
まつもと ゆきひろ、石塚 圭樹 他

商品詳細を見る
 

埋め込みruby、組み込みruby、組み込み向けruby 違いわかる?

Ruby ネタでクイズを作ってみました。
次の 3 つがそれぞれ何を指しているかわかりますか ?
  • 埋め込み ruby
  • 組み込み ruby
  • 組み込み向け ruby

続きを読む

 
このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
40位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
4位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

03月 | 2017年04月 | 05月
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。