|
ENCODINGSHIFTJISさん
詳しい説明ありがとうございます。
>BOM.BAT を作ります、以下の一行
>findstr /m /s "" *.txt
>次に、バイナリエディタで ””の中身を FEFF にして、保存
>BOM.BATを コマンド実行します。
バッチファイルを作るということを理解していませんでした。そこで
やってみました。
findstr /m /s "" *.txt を入力後、バイナリモードで開く。
66,69,6E,64,73,74,72,20,2F,6D,20,20,2F,73,20,22,
22,20,2A,2E,74,78,74,0D,0A,
22, と 22, の間に
FE,FF,
を入れて
66,69,6E,64,73,74,72,20,2F,6D,20,20,2F,73,20,22,FE,FF,
22,20,2A,2E,74,78,74,0D,0A,
として保存後、バッチファイルを実行。
対象となるファイルはサンプルとして以下の三つ。
Test_UTF16_NoBom.txt(UTF16ファイルBOM無し)
Test_UTF16_Bom.txt(UTF16ファイルBOM付き)
Test_UTF8_Bom.txt(UTF8ファイルBOM付き)
結果は以下の通り。
Test_UTF16_NoBom.txt
Test_UTF16_Bom.txt
はて?BOM付きでない Test_UTF16_NoBom.txt もヒットしてしまいま
した。
【疑問1】
上記バッチファイルでどうしてBOM付きでないファイルがヒットして
しまうのか。
【疑問2】
BOM付きの Test_UTF16_Bom.txt ファイルをバイナリモードで開いて
確認すると、ファイルの先頭は FE,FF, ではなく FF,FE, である。
【疑問3】
疑問2に関連して、ということは、バッチファイルの検索文字を、
FE,FF, ではなく FF,FE, にすればいいのかと思い、試してみたところ
コマンドのエラーが出ます。exit でも終了しないので、ウインドウの
×をクリックして終了。
【疑問4】
UTF8ファイルBOM付きの Test_UTF8_Bom.txt はきちんと検索されるのか
と思い、今度は EF,BB,BF, に書き換えてバッチファイル実行。これも
コマンドのエラーが出て、あえなく終了。
ENCODINGSHIFTJISさんが最初のご回答でおっしゃっていた
> すぐ出来る、不完全な方法
>Windowsコマンド findstr を使う
の「不完全な方法」というのが妙に引っかかりますが、コマンドでは
上手く、完全に検索されないということなのでしょうか?
文字コードの深い部分はまだ未知の世界なので、ネットで色々勉強
しておきます。とりあえず現在までの状況を報告しておきました。
http://www.geocities.jp/h2fujimura/mutter/endian/bom.html
>Cygwin 環境では unix コマンド
>head -c2 BOM付き.txt| grep -e ""
>の形で、先頭2バイトつまみ出し+判定できます。
>””の中身は FE しか指定できなかった。
>FF を入れるとコマンド解析段階で弾かれる。
>
>PiowerShell とかも考えたが、時間がない。
この辺りになると、全く分かりません。Windowsのコマンドの理解でも
アップアップ状態です。
ありがとうございました。
|
|