2011年11月29日火曜日

[PHP]とあるファイルの文字コードを判定する

PHPで文字コードの判定を行う際、mb_detect_encodingをよく使います。
ベンリなんですが、いまいち判定の精度がよくありません。


それで、PHPに頼るのはやめて、linuxコマンド直打ちを利用します。


利用するコマンドは、「nkf」です。


以下のページを参照しました。
テキストファイルの文字コードを調べるには(nkf編) - @IT http://www.atmarkit.co.jp/flinux/rensai/linuxtips/980nkfguess.html
以下のように、nkfコマンドに--guessオプションを指定すれば文字コードを調べられる。
$ nkf --guess /media/winxp/test.txt
ISO-2022-JP
$ nkf --guess /media/winxp/test2.txt
Shift_JIS
$ nkf --guess ~/test3.txt
UTF-8
これを流用します。

$file に調べたいファイルのパスが入っているとして、
$enc = shell_exec('nkf --guess ' . $file);
とすれば、$encにそのファイルの文字コードが入ってやってきます。

いままで、ファイルを全部読み込んでmb_detect_encodingしてとか、
ファイルの扱いに関しちゃPerlがいいでって思い、perlスクリプトをどうやって使おうか迷ってました。
とても楽チンに解決できてとても、いいわぁ,,,

ザ・シークレットサービス

大層ななまえですが、選択した文字列をシークレットウインドウ内で、 Google検索するというものです。 https://docs.google.com/open?id=0B58uK3aQr15IM0ItWk1WVnFUWnVleXJVWEhqUktCdw 1...