EUC-JPやUTF-8などはしっかり取得できるものの www.yahoo.co.kr などの EUC-KR の文字コードの場合 mb_detect_encoding で文字コードを出そうとするとEUC-JPになってします。
日本語、英語でもちゃんと各国の文字コードを取得するにはどうしたらいいのでしょうか?
PHPはデフォルトの状態では韓国語に対応していません。
(中国語、ロシア語にも対応していません。)
関係しそうな部分をピックアップしておきます。
mbstring は拡張モジュールです。つまり、デフォルトでは 有効にならないということです。 configure スクリプトでモジュールを有効にする必要が あります。詳細は、インストールの 節を参照してください。
--enable-mbstring=kr を 使用した場合、韓国語のエンコーディングがサポートされます。
また、--enable-mbstring=all を指定した場合、サポートされるすべての文字エンコーディングが 有効となるので便利です。
注意: 以前のバージョンとの互換性のため、何もオプションを指定せずに --enable-mbstring を使用した場合は 日本語のエンコーディングがサポートされます。
phpinfo()でconfigureの内容を確認してみてください。
もし、すでに韓国語が使える(--enable-mbstring=kr、または--enable-mbstring=allが設定されている)場合、mb_detect_encodingでの設定でEUC-KRを追加すれば正しく判定できると思います。
試していないので間違っている可能性もありますが、mbstring.languageをneutral(UTF-8)に設定しておいた方が良いかもしれません。
mbstring.languageの設定はphp.iniで変更するか、あるいはini_setでファイルごとに変更してください。
実際に試していないので確実ではありませんが、参考になると幸いです。
ためしてみてください。
スタート→コントロール パネル→日付時刻地域と言語のオプション→地域と言語のオプション→補足言語サポートの東アジア言語ファイルのインストールにチェックして適用をクリック
これで大丈夫だと思います。
なんのことですか?
mb_detect_order()で検出順序を指定してあげます。
mb_detect_order('iso-2022-jp, utf8, euc-kr, eucjp-win');
などのように。
このとき、コードがかぶると先頭から順に一致したものに
マッチするので、並び方も重要です。
eucよりeuc-krを先に検出したい場合は上記のようにすればokです。
OKです。ありがとうございました。
ありがとうございました。