[PHP-users 31293] Re: grepでの文字検索とstrposでの文字検索の違い

Takamori Mitsuki hashibata @ gmail.com
2007年 1月 19日 (金) 22:58:29 JST


高森です。

goungounさん、本当にありがとうございました。

grepは有名なソフトですし、--versionで表示されるヘルプも
日本語だったことから、マルチバイトは対応済みだろうと思いました。
だとすれば私の環境だけで起こるのではないか、と考え
PHPの設定を見直したり、オプションを変更したりApache、PHPの
再コンパイルを繰り返したりしました。
先日ようやく、PHPの設定ではなさそうだ、ということが分かりました。

もう諦めようと思っていたところに、同じ現象を再現できる方がいて
さらにいろいろ調べていただき、嬉しかったです。

根本的な問題解決ではない、とのことですが
現状の間違った結果が改善するだけでも御の字です。
ぜひ使わせていただきます。

07/01/19 に goungoun<gounx2 @ gmail.com> さんは書きました:
> こんにちは。
>
> # 既にPHPの話題ではありませんが、
> # 個人的に、そんなことあるの?と気になったので。
>
> On Fri, 19 Jan 2007 13:46:10 +0900
> "Takamori Mitsuki" <hashibata @ gmail.com> wrote:
> >
> > シェルにおいても、この問題が発生することが分かりました。
> >
> > ex) grep あ testdata
> >
> > testdata
> > ------------
> > い♪あ
> >
> > 結果)
> > 検索件数:0
> >
>
>
> OSは、debian sarge
>
> ---------------------------------
> $
> $ env | grep LANG
> LANG=ja_JP.EUC-JP
> LANGUAGE=ja_JP:ja:en_GB:en
> $ cat hoge
> いあ
> い♪あ
> い♪ あ
>>>> ♪い
>
> $ od -t xC hoge
> 0000000 a4 a4 a4 a2 0a a4 a4 a2 f6 a4 a2 0a a4 a4 a2 f6
> 0000020 20 a4 a2 0a a4 a2 0a a4 a4 0a a4 a6 0a a2 f6 a4
> 0000040 a4 0a 0a
> 0000043
> ---------------------------------
>
> で、検索
> ---------------------------------
> $ grep あ hoge
> いあ
>> ---------------------------------
>
> あら・・・
> "♪"含んでるとヒットしませんね
>
> EUCはASCII互換なので、LANG=Cでやってみる
>
> ---------------------------------
> $ LANG=C grep あ hoge
> いあ
> い♪あ
> い♪ あ
>> ---------------------------------
>
> 単純な文字列検索であれば
> これでしのげますけど根本解決ではありませんね。
>
> UTF-8での挙動も気になったので確認してみたのですが
> こちらは期待通りに検索できました。
>
> EUC固有の問題っぽいです。
>
> ふと、grepの問題なのか?気になったので
> さらに perl で確認してみると
>
> ---------------------------------
> $ LC_ALL=ja_JP.EUC-JP perl -ne 'print if (m/あ/)' hoge
> いあ
> い♪あ
> い♪ あ
>> $ LC_ALL=C perl -ne 'print if (m/あ/)' hoge
> いあ
> い♪あ
> い♪ あ
>> ---------------------------------
>
> こちらは期待通りでした。
>
> まとめると、
>
> grep で ja_JP.EUC-JP の場合に
> "♪"を含んだテキストを処理対象とすると
> 期待通りに動作しない。
>
> ということのようですね。
>
> ps.
> あと気になるのは grep のオプション周りですが。
> 力尽きました・・・
>
>
> --
> goungoun <gounx2 @ gmail.com>
> http://goungoun.dip.jp/app/
>
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>


PHP-users メーリングリストの案内