• ベストアンサー

ファイルの文字コードを調べたい

お世話になります。 現在PHPでテキストファイルの文字コードを調べる関数を作っています。 流れは 1 テキストファイルのパスをわたす 2 ファイルがあれば開いて最初の1行を読む 3 mb_detect_encoding関数でその文字列を調べて返す という順なのですが mb_detect_encodingで何をおくってもASCIIとしかならず 不思議に思い質問させていただきました もしかしてmb_detect_encodingには日本語を渡さないと autoの場合すべてASCIIで返ってくるのでしょうか? auto時の調べる順番がASCIIが一番上になっているためですか? また、ファイルの文字コードを調べるのにもっと良いほうほうがあれば 教えていただけないでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

「最初の1行目は空行だったり、2バイト文字が入っていない行」というケースが多いですが、そういう事はありませんか? 「空行や2バイト文字が入っていない行は無視して、そうじゃない行の判定結果を最終的な結果として返す」必要があるのではないでしょうか? むろん「空行や2バイト文字が入っていない行しか無かった。2バイト文字が1つも無い」と言う時もあるでしょう。 1 テキストファイルのパスをわたす 2 ファイルがあれば開く 3 1行読む 4 ファイルが尽きていて読めなかったらASCIIを結果として返す 5 mb_detect_encoding関数でその文字列を調べる 6 結果がASCII以外なら、それを最終結果として返す 7 3から繰り返す

can5974
質問者

補足

返信ありがとうございます 2バイト文字のみで判定しなければいけないということですね 記述していただいた順で作成したいと思います ありがとうございました

その他の回答 (1)

  • maura
  • ベストアンサー率46% (48/104)
回答No.1

半角英数字を mb_detect_encoding に渡すと どんな文字コードであってもASCIIとなるからでは ないでしょうか? 文字コードを調べるコマンド $ kcc -c tmp1.txt $ nkf --guess /test.txt

can5974
質問者

お礼

返信ありがとうございます。 やはり半角英数の場合はASCIIが返ってくるのですね・・・ ファイル内のすべての文字が半角英数の場合は判定不可能となるわけですか ありがとうございました

関連するQ&A