EUCファイルのgrepの件No.09438
jm さん 01/08/16 19:19
 
はじめまして jm(又城)ともうします。

最近 Perlを始めたのですが 
smb上のunixファイルをgrepすると
1.漢字はgrepできない というより
 sjisの漢字でgrepしているような気がします。
2.結果が文字化けしている
 eucコードをそのまま表示しているような気がします。

というような結果になってしまいます
対処法をご存じでしたら
よろしくお願いします。

ちなみに環境は 以下の通りです。

Windows 2000 Sp2 メモリ256
秀丸3.0.8

smbサーバは Vine linux 2.1.5 です。 

[ ]
RE:09438 EUCファイルのgrepの件No.09439
小西 さん 01/08/16 20:23
 
jm(又城)さんこんばんは。

まず、秀丸内部の処理はShift-JISです。
ファイルを開くとき、何も指定がなければ、自動判別して開かれます。
経験上知っているのですが、秀丸の自動判別はEUCでかかれたファイルをほとんど自
動認識してくれません。

で、普通の場合、smbに割り当てたドライブをEUCドライブに設定すれば、自動的にEU
Cと思って開いてくれるのですが、Grepは効いてくれないですね(^^;
Grepで自動判別できるのはShift-JISとUnicodeだけですね。
あとは多分、Shift-JISだと思って読み込んでいる様子。

Grep機能は、JRE32.DLLという、既成のソフトを使って実現されています。仕様を見
たわけじゃないのでなんともいえませんが、現状ではお手上げだと思います。

[ ]
RE:09439 EUCファイルのgrepの件No.09440
jm さん 01/08/16 22:28
 
小西さん こんばんは

>経験上知っているのですが、秀丸の自動判別はEUCでかかれた
>ファイルをほとんど自動認識してくれません。

>Grepで自動判別できるのはShift-JISとUnicodeだけですね。
>あとは多分、Shift-JISだと思って読み込んでいる様子。
>
>Grep機能は、JRE32.DLLという、既成のソフトを使って
>実現されています。仕様を見たわけじゃないので
>なんともいえませんが、現状ではお手上げだと思います。
やはりそうなるのですかね
素人考えだったのですが EUCで開いたファイルなら
EUCに変換できることから JRE32.DLLに渡すときに
EUCに変換して 渡して 結果もEUCに変換なんて
すればできるかなと 思った次第です。

ありがとうございました

[ ]
RE:09440 EUCファイルのgrepの件No.09441
ひろ さん 01/08/17 00:23
 
 小西さん、jm さん今日は、ひろです。
> >経験上知っているのですが、秀丸の自動判別はEUCでかかれた
> >ファイルをほとんど自動認識してくれません。
 先ずこの点は違います。
 「その他」→「動作環境」→「編集」の「文字コードの自動認識をする」
を ON にしておけば、半角カタカナばかりのファイルでなければ、ほぼ正確
に自動認識します。この設定の詳細についてはヘルプを見て下さい。

> >Grep機能は、JRE32.DLLという、既成のソフトを使って
> >実現されています。
 これも違うのでは?
 JRE32.DLL が行っているのは、あくまで正規表現の処理で、検索自体は秀
丸が行っているはずです。実際に JRE32.DLL を削除しても正規表現を使わ
なければ、grep が出来ます。

 というわけで UMA のメールボックスのように、一つのファイルに複数の
文字コードが混在しているような場合を除き、正規表現を使用する場合を含
め、秀丸の grep は十分使用に耐えると思います。

 ただし
> smb上のunixファイルをgrepすると
ここで smb とは Samba のことですよね。それならばこの共有しているネッ
トワークドライブに存在するファイルの文字コードが全て EUC ならば、秀
丸の設定で EUC ドライブとしておくと、より正確な検索が出来ると思いま
す。注意すべきは、この設定をすると、指定したドライブに存在するファイ
ルは、たとえ他の文字コードで書かれていても EUC として処理します。

[ ]
RE:09441 EUCファイルのgrepの件No.09442
さん 01/08/17 08:58
 
ひろさんこんにちは。
> 「その他」→「動作環境」→「編集」の「文字コードの自動認識をする」
>を ON にしておけば、半角カタカナばかりのファイルでなければ、ほぼ正確
>に自動認識します。この設定の詳細についてはヘルプを見て下さい。
やってますよ。うん。でもだめなんだよな。

>> >Grep機能は、JRE32.DLLという、既成のソフトを使って
>> >実現されています。
> これも違うのでは?
> JRE32.DLL が行っているのは、あくまで正規表現の処理で、検索自体は秀
>丸が行っているはずです。実際に JRE32.DLL を削除しても正規表現を使わ
>なければ、grep が出来ます。
ブー。 試してみればいいですが、だめだったんですよ。

[ ]
RE:09442 EUCファイルのgrepの件No.09446
秀丸担当 さん 01/08/17 11:30
 
>> 「その他」→「動作環境」→「編集」の「文字コードの自動認識をする」
>>を ON にしておけば、半角カタカナばかりのファイルでなければ、ほぼ正確
>>に自動認識します。この設定の詳細についてはヘルプを見て下さい。
>やってますよ。うん。でもだめなんだよな。

これはひろさんの言われるとおりで、「文字コードの自動認識をする」を
ONにしておけば、grepでも自動認識をします。
これでダメな場合は、半角カナを含んでいたり、自動認識ができなかった
ということになります。
grepでも自動認識ができるようになったのは比較的最近のバージョンです。
でもV3.08を使われているのならば自動認識ができます。

[ ]
RE:09446 EUCファイルのgrepの件No.09448
さん 01/08/17 12:20
 
本当だ\(^o^)/
別のオプションと勘違いをしていました。
お騒がせ,すみませんでした。_(。。)_

[ ]
RE:09448 EUCファイルのgrepの件No.09452
jm さん 01/08/17 19:59
 
古西さん 秀丸担当者さん ひろさん 
ありがとうございました
正常にgrepすることができました

こんごともよろしくお願いします。

[ ]