大量のテキストにBOMを付ける方法を教えて下さい。


たくさんのテキストファイル(UTF-8)があるのですが、これにBOMを付ける必要が出てきました。
1つ1つなら方法はいくらでもあるのですが、何かいっぺんに付けられる良い方法はないでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/07/07 20:07:19
  • 終了:--

回答(5件)

id:vivisuke3141592 No.1

びびすけ回答回数33ベストアンサー獲得回数02004/07/07 20:37:59

ポイント1pt

http://tohoho.wakusei.ne.jp/wwwperl.htm

そのファイルは現在ありません

Perl や Ruby などのスクリプト言語でBOMを付加するフィルターを作成し、すべてのファイルをフィルターに食わせればいいと思います。

id:x2pop

どんなものを作ればいいのか見当が付きません。

私のスキルでは、、

2004/07/07 21:33:15
id:ozonepapa No.2

ozonepapa回答回数288ベストアンサー獲得回数02004/07/07 20:44:28

ポイント5pt

URLはダミーです。

OSがUNIXかLinuxであればBOMのファイルを作成しcatで連結してはどうでしょうか?

以下がbashで実行できるスクリプトのサンプルです。

/tmp/BOMファイルはあらかじめ作っておきます。

for f in ( * );

do

mv $f ${f}-

cat /tmp/BOM ${f}- > $f

rm -f ${f}-

done

id:x2pop

申し訳ありません。WindowsXPです。

Windowsでもこの方法使えるのかな。

補足します。

当方WindowsXPで、

特定のフォルダの中のファイル全部(といっても拡張子は限定)にBOMを付けたい、ということです。

2004/07/07 21:35:12
id:hmom No.3

hmom回答回数46ベストアンサー獲得回数02004/07/07 21:12:26

ポイント5pt

http://ew.hitachi-system.co.jp/w/BOM.html

BOM 【Byte Order Mark】 | 情報の表現用語辞典

UTF-8でもBOMとしてFEFFを入れればよいようですね。

まずはFEFFがバイナリで入ったファイルを作っておきます。(BOM.dat)

UNIX系OSならcshやtcshを使って

foreach i ( *.txt )

cat BOM.dat $i > $i.new

mv $i.new $i

end

などで出来るかと。

id:x2pop

最初からWIndowsと書いておけばよかったですね(汗)申し訳ない…。

どうしたものか、、

2004/07/07 21:36:05
id:aki73ix No.4

aki73ix回答回数5224ベストアンサー獲得回数272004/07/07 21:36:30

ポイント10pt

とりあえず、作ってみました

id:x2pop

おお、、すごい。。

世の中には凄い方がいらっしゃるものです…。

しかし、、変です。

試したところUTF-16になってしまい、激しい文字化けが、、

よく分からないのですが、エディターで作った物と比較したところ最初が違います。

EF BB がUTF-8

FF FE が今回のソフトで、UTF-16と認識されています。

それから、拡張子のことをちゃんと言わなかったのがいけないのですが、.txtだけなく、

.html .xhtml .log など色々あるので、(.txt と.htmlが一番多いのですが)…

なんだか贅沢を言っているようで…申し訳ありません。

2004/07/07 21:54:40
id:aki73ix No.5

aki73ix回答回数5224ベストアンサー獲得回数272004/07/07 22:24:34

ポイント490pt

>UTF-8でもBOMとしてFEFFを入れればよいようですね。

>試したところUTF-16になってしまい、激しい文字化けが、、

う、前の人の見て安心してしてしまいました(^-^;

>EF BB がUTF-8

あれ? EF BB BF ではないですか?

とりあえず改良してみました

とりあえず、3回目は回答できないので

以後はいわしにでも・・・

id:x2pop

すばらしい! 完璧です。

ありがとうございました。本当に感謝です。

BOMや、UTF(7/8/16/32.. BE LE)などは複雑なようなので、、

私が書いたのは、秀丸で保存した場合です。

2004/07/07 22:27:26
  • id:x2pop
    ちょっと改良すれば配布できますね

    すばらしいソフトをありがとうございました。
    お金に余裕があればもっとポイントを付けるべきなんでしょうけど、、申し訳ないです。

    違うフォルダに同名のファイルがあるとどちらかしか残らない、といった点くらいですが、
    改良すればオンラインソフトとして配布できそうですね…。

    BOMの種類に関してはなんだかごちゃごちゃでよく分かりません。
    本家を見てみれば分かるらしいのですが…。
    http://www.unicode.org/faq/utf_bom.html#BOM

    無くしたらいけないので半永久保存しておきます(^^;;

    重ね重ねありがとうございました。
  • id:x2pop
    一応報告を

    作成したHTMLにこのソフトでBOMを付けたところ、エンコード形式が
    ISO-8859-1の場合、最初に謎の記号が表示されてしまいます。
    HTML自体はUTF-8を宣言しているのでブラウザがそれを無視してISO-8859-1で表示しているためと思われます。mozilla系のブラウザのみなので大きな問題ではないようですが、、。

    なお、EF BB BFではなく、 EF BB とすると、問題なくなります。
    謎です(汗)

    英語のページは秀丸でBOMを付けておこうと思います。
    数はほとんど無いので…。(ほとんど日本語)

    メモ帳と秀丸ではこの問題はありません。
  • id:x2pop
    Re:一応報告を

    失礼、私の勘違いでした(汗)すいません、、
  • id:aki73ix
    Re:ちょっと改良すれば配布できますね

    >違うフォルダに同名のファイルがあるとどちらかしか残らない、といった点くらいですが、

    拡張子をつけて、別ファイルを作ろうかとも思ったのですが、
    かえって混乱しそうなので止めました(笑)
    例)aaa.txt -> aaa.txt.log
    ファイル名が同じって所までは考えてませんでしたね
    必要になれば、又、質問を立ててください(笑)

    >BOMの種類に関してはなんだかごちゃごちゃでよく分かりません。
    >本家を見てみれば分かるらしいのですが…。

    いくつか種類があるみたいですね UTF-32とか・・・
    最初BOMってなんだろうと思いました、UTFのヘッダのことだったんですね
    少し勉強になりました(^-^)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません