私のスクリプトはUTF-8で記述されており、スクリプトが使用するMySQLデータベーステーブルの照合はutf8_unicode_ciです。$_GET
ここで、/からの文字列をスクリプト/データベースからの「内部」文字列と比較したい場合、$_POST
またはデータベースに何かを入れたい場合、変数のエンコーディングをチェック/修正する必要がありますか、それともPHPはすでにそれを行っていますか?
前者の場合、スクリプトの最初に次のように簡単に実行できますか?
function inputToUtf8($string) {
$detectedEncoding = mb_detect_encoding($string, 'UTF-8,ISO-8859-1', true);
if ($detectedEncoding == 'UTF-8') {
return $string;
} elseif ($detectedEncoding == 'ISO-8859-1') {
return utf8_encode($string);
}
throw new Exception('Invalid character encoding detected.');
}
foreach ($_GET as &$v) $v = inputToUtf8($v); unset($v);
foreach ($_POST as &$v) $v = inputToUtf8($v); unset($v);