"日本語"という文字列を各エンコードでほげほげ

文字化けしたときに、環境に依存しない方法で何とかするときとか。

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

/*
 * "日本語"という文字列を各エンコードで出力
 */
echo "UTF-8:"  . pack("H*","e697a5e69cace8aa9e") . "<br />\n";
echo "EUC-JP:" . pack("H*","c6fccbdcb8ec") . "<br />\n";
echo "SJIS:"   . pack("H*","93fa967b8cea") . "<br />\n";
echo "direct: 日本語<br />\n";


/*
 * $str に "日本語" と思われる文字列を渡すと、エンコードを返す。
 *
 * 例えば、DBから取得した文字列が化けてるとき。
 * DBに"日本語"と書いておき、それをselectしたものをchk()するだけ。
 * +-------------------------------------------
 * |$str = selectした"日本語"と思われる文字列
 * |echo chk($str) . "<br />\n";
 * +-------------------------------------------
 */
function chk($str)
{
    if (bin2hex($str) === "e697a5e69cace8aa9e") return "UTF-8";
    if (bin2hex($str) === "c6fccbdcb8ec") return "EUC-JP";
    if (bin2hex($str) === "93fa967b8cea") return "SJIS";
    return "unknown";
}

?>