重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

お世話になります。

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

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

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

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

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

A 回答 (2件)

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



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

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

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

この回答への補足

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

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

補足日時:2007/03/13 09:05
    • good
    • 0

半角英数字を mb_detect_encoding に渡すと


どんな文字コードであってもASCIIとなるからでは
ないでしょうか?

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

$ nkf --guess /test.txt
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2007/03/13 09:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!