文章の文字化けを判断?


ビギナープログラマ(仮)  2007-08-28 17:35:03  No: 27576  IP: 192.*.*.*

再度の質問失礼致します。
現在IEのキャッシュを取得してそのソースを解析するという作業をしておりますが、文字化けに悩まされております。

metaタグを読み込んで判断する他に配布されているjコンバータなどを使用させていただき、なんとかある程度までは文字コードを判断出来るプログラムになりつつありますが、
metaタグでの表記が無く、jコンバータでも解析不可能な場合など、文字化けが残ってしまう場合もあります。(多く表記されていないUTF-8)
今後の処理に文字化けのソースを入れてしまうと不具合が起こってしまうので、文章が文字化けしているかどうかを判断したいのですが…
何か良い方法はありますでしょうか?
もしくは特定の文字コードかどうか判断する方法や関数など、何か良い方法があればお知恵をお貸しください><

どうか、よろしくお願い致します。

編集 削除
deldel  2007-08-30 08:56:58  No: 27577  IP: 192.*.*.*

1文字ずつ文字コードを調べて、正常な文字コードの範囲外なものが
有るかどうかを調べるのではダメでしょうか?

編集 削除
ビギナープログラマ(仮)  2007-09-04 14:32:13  No: 27578  IP: 192.*.*.*

deldel様、アドバイスありがとうございます。
文字コードについてほとんど何も知らなかったため正常等の判断基準が良くわからず、
あれこれ調べておりましたところこんなに返答が遅くなってしまいました…申し訳ありません。
ただ、まだ今ひとつ理解できていないところも多く…そのため見当はずれなことを言っていたらお恥ずかしいのですが、
ひとつ文字コードを決めて、ソースがその文字コードで記述されているかどうかを判断する(違っていたら取らない)ことなら出来そうなのですが、あるソースがUTF-8かShift_JISかを判断するというのはどういった手順でやればよいのか…といったようなことで悩んでいます。
文字コードを調べてそれぞれの文字コードリストと対応させ、一番それっぽいものを選ぶ、といった感じなのでしょうか?

編集 削除
もにゃ  2007-09-04 14:54:38  No: 27579  IP: 192.*.*.*

文字コードを100%判別する方法なんてのは存在しません。
あくまで確率論でしかないのです。
まぁその前に質問者さんは文字コードについてもう少し勉強する必要がありそうです。
>>文字コードを調べてそれぞれの文字コードリストと対応させ、一番それっぽいものを選ぶ
これをどうコーディングするかが腕の見せ所ですね。
サンプルコードは巷にあふれてると思います。

編集 削除
ビギナープログラマ(仮)  2007-09-04 15:42:26  No: 27580  IP: 192.*.*.*

もにゃ様
アドバイスありがとうございます。
現在の悩みは「文字コードが文字化けしているかどうかを判断したい」といったことでしたが、
文字化けとは、ある決まりのもと並んでいる数字を、他の決まりで読み込んでいる、といった状態ですよね?(稚拙な物言いで申し訳ないです^^;)
となると、並んでいる数字に変わりはないわけで、「文字化けしているかどうか調べる=どの種類の文字コードか調べる」ということである、と、やっとここを理解しました。

むむ…とりあえず、もう一度よくよく勉強した上で、また出直したいと思います。
お二人とも、本当にありがとうございました。

編集 削除
ですます調  2007-09-04 16:38:53  No: 27581  IP: 192.*.*.*

「です。」「ます。」「…さい。」
「です.」「ます.」「…さい.」

……を各文字コードで検索。
ヒット率の一番高い文字コードのものをその文字コードとする。

常体の場合、「…だ。」「…る。」などですから、確率は下がりますが。

ひょっとしてドイツ語とかフランス語とかもあるんでしょうか?
ま、その場合でも、それぞれの言語の特徴的な「一定の部分」で
当たりをつけてみるとかする・・・。
こんなアイデアではどうでしょう?

編集 削除
ついでに(遅いけど  2007-10-06 10:31:16  No: 27582  IP: 192.*.*.*

文字コード範囲で判定は

あ->・ (フォントがなくて  ・  で表示)

のような範囲以外の文字コードに文字化けしている場合は判断できるけど

あ->い

のような範囲以内の文字コードに文字化けしている場合判定できないよ?

編集 削除
ですます調  2007-10-07 16:56:44  No: 27583  IP: 192.*.*.*

・・・では条件次第でダメ・・ってことのレスですか?

S_JIS「です。」 → 検索  ヒット:0    ハズレ
  JIS「です。」 → 検索  ヒット:0    ハズレ
UTF-8「です。」 → 検索  ヒット:0    ハズレ
  EUC「です。」 → 検索  ヒット:22  EUC らしい

・・・これでできませんか?

編集 削除