ちょっと調べものしようとおもって、Limechatのログを漁っていたんですが、Windowsの検索(スタートメニューとかフォルダの右上にある検索ボックス)でなかなか引っかからない。絶対どれかのテキストファイルにその文字列があるはずなのにひっかからない。古いファイルは検索でHitするんだけどなー。と感じたところで思い出す。
LimeChat Version 2.19 2007/10/28
確かに検索にひっからないのはUTF-8で出力されたログファイルだ。そこで、いろいろ試してみた。
飲んでたレモンティーの側面に書いてた紅茶の日の話と、イソップ童話のすっぱいブドウの話
これをエンコード指定保存できるTerapadを使って、Shift-JIS、UTF-8、UTF-8Nでそれぞれ保存。各ファイルともインデックス作成が終わったのを確認して、Windows検索してみた。(そもそもこのスタートメニューとかフォルダからの検索って正式名称なんなんだろう?)
日本語で検索
英単語で検索
ちなみに綺麗なデスクトップ環境がなかったのでMicrosoftが配布してたMicrosoft Windows 7 90-Day Eval VHDで環境構築しました。
2枚の画像を比較すると、日本語で検索したときUTF-8Nでフォーマットされたテキストは検索に引っかからないのがわかる。英単語で検索したときもUTF-8Nでフォーマットされたテキストファイルは日本語が文字化けしている。
んで、UTF-8とUTF-8Nの違いはなんぞやって話になるんですが、Wikipediaに詳しいことはまかせておく。 UTF-8 (バイト順マーク)
どう呼べばいいかわからないので、UTF-8Nと書くけど、結論としては、
- Windowsのファイル検索はUTF-8 (BOMあり)しか日本語検索は対応してない。
- Limechatをはじめとする一般的なアプリケーションは UTF-8 (UTF-8N /BOM無し)で出力している。
- UTF-8(BOMあり)のファイルは先頭に3byte識別文字が入るので、エディタやスクリプトなどで誤作動の可能性がある。
で、どうすりゃいいの・・・。
Shift-JISで保存するか、UTF-8(BOM有り)で保存するしかないのか?
ぐぐってみたり、MSのサイト読んでたけど解決策が見つけきれなかった。個人的にWebサイトやらプログラミングとかUTF-8に乗り換えたところなので、また戻るのは嫌・・・。
Vistaの頃からなんか検索変だなぁと思ってたけど今頃原因気づくとは・・・。てっきりインデックス作成できてないとかそんなことかと思ってた。UTF-8Nのままでも検索Hitするようにする方法教えてください・・・。