こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

お世話になります。

現在PHPでテキストファイルの文字コードを調べる関数を作っています。
流れは

1 テキストファイルのパスをわたす
2 ファイルがあれば開いて最初の1行を読む
3 mb_detect_encoding関数でその文字列を調べて返す

という順なのですが
mb_detect_encodingで何をおくってもASCIIとしかならず
不思議に思い質問させていただきました

もしかしてmb_detect_encodingには日本語を渡さないと
autoの場合すべてASCIIで返ってくるのでしょうか?
auto時の調べる順番がASCIIが一番上になっているためですか?

また、ファイルの文字コードを調べるのにもっと良いほうほうがあれば
教えていただけないでしょうか?
よろしくお願いいたします。

投稿日時 - 2007-03-12 16:28:51

QNo.2826534

すぐに回答ほしいです

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

「最初の1行目は空行だったり、2バイト文字が入っていない行」というケースが多いですが、そういう事はありませんか?

「空行や2バイト文字が入っていない行は無視して、そうじゃない行の判定結果を最終的な結果として返す」必要があるのではないでしょうか?

むろん「空行や2バイト文字が入っていない行しか無かった。2バイト文字が1つも無い」と言う時もあるでしょう。

1 テキストファイルのパスをわたす
2 ファイルがあれば開く
3 1行読む
4 ファイルが尽きていて読めなかったらASCIIを結果として返す
5 mb_detect_encoding関数でその文字列を調べる
6 結果がASCII以外なら、それを最終結果として返す
7 3から繰り返す

投稿日時 - 2007-03-12 16:45:31

補足

返信ありがとうございます

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

投稿日時 - 2007-03-13 09:05:57

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

半角英数字を mb_detect_encoding に渡すと
どんな文字コードであってもASCIIとなるからでは
ないでしょうか?

文字コードを調べるコマンド
$ kcc -c tmp1.txt

$ nkf --guess /test.txt

投稿日時 - 2007-03-12 16:42:43

お礼

返信ありがとうございます。

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

投稿日時 - 2007-03-13 09:05:42

あなたにオススメの質問