スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Prev.    Category    Next 

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)
# 通常の出力
}

関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

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

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

07月 | 2017年08月 | 09月
- - 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 31 - -


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

yohshiy

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

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

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。