我的脚本是用 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);