[3659]
officeファイルの判別
maru
お世話になっております。
以前一般掲示板の方で書き込みさせていただいた件で
どうしてもあきらめきれず、自分で何とかしてみました。
仕事上、Wordファイルを対象にGrep実行する頻度が高く
あったら便利そうだったので。
とはいえ、いきなり業務で使うにはちょっと勇気がいるので
恥かしながら、こちらでソースを掲示させていただきました。
ヤバそうなら、どなたかコメントを頂けると幸いです。
ファイル先頭にOffice文書のヘッダー
D0-CF-11-E0-A1-B1-1A-E1 があれば
有無を言わさずUNICODEという少々乱暴な仕様ですが
素人目にはうまく動作しているように見えます・・・。
//CMemory::IsUnicodeBom()に追加
if( 8 <= nBufLen ){ //OfficeヘッダーがあればUNICODE
if( pBuf[0] == (unsigned char)0xd0 &&
pBuf[1] == (unsigned char)0xcf &&
pBuf[2] == (unsigned char)0x11 &&
pBuf[3] == (unsigned char)0xe0 &&
pBuf[4] == (unsigned char)0xa1 &&
pBuf[5] == (unsigned char)0xb1 &&
pBuf[6] == (unsigned char)0x1a &&
pBuf[7] == (unsigned char)0xe1 ){
return CODE_UNICODE;
}
}