UTF-16/UTF-32ではエンディアンを区別するためバイト順マーク
(BOM)がファイル先頭3Byteに付与されるらしい。
UTF-8では本来必要ないのだが慣例(?)的に付与するプログラムが
あるそうでUTF-8におけるBOMの取り扱いは規定がないらしい。
#wikipedia調べ。自分の理解が間違ってるかも
ADODB.Streamを使ってUTF-8で書き出すと無条件にBOMが
付与されるとのこと。
landisk HDL4-Gのmd5sumはBOM有無に影響されないようだが
何かの時のためにBOM除去ルーチンを入れておくことに。
参考にさせてもらったのはこちら。
http://d.hatena.ne.jp/replication/20091117/1258418243
要は一旦出力した後バイナリモードで再オープンし
開始オフセット+3でBOMをすっ飛ばす。
・ ・ ハッシュファイル変換 ・ // ファイル出力 StreamObjO.SaveToFile(OFileName,2); // 1:新規作成(あるとエラー) 2:ある場合は上書き // ストリームクローズ StreamObjI.Close(); StreamObjO.Close(); // BOM除去 StreamObjI.type = 1; StreamObjO.type = 1; StreamObjI.Open(); StreamObjO.Open(); StreamObjI.loadFromFile(OFileName); StreamObjI.Position = 3; StreamObjO.Write(StreamObjI.Read()); StreamObjI.Close(); StreamObjO.SaveToFile(OFileName,2); StreamObjO.Close(); PPx.Quit();