PHP是否负责$_GET和$_POST中变量的字符编码? (PHP 5.4)
发布时间:2020-12-13 16:50:03 所属栏目:PHP教程 来源:网络整理
导读:我的脚本是用UTF-8编写的,它使用的 MySQL数据库表的核心是utf8_unicode_ci.现在,如果我想将$_GET / $_ POST中的字符串与脚本/数据库中的“内部”字符串进行比较,或者甚至将某些内容放入数据库,我是否必须检查/修复变量的编码,或者 PHP是否已经执行了此操作我
我的脚本是用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); 解决方法
PHP不会为您做到这一点,但客户端浏览器经常这样做.以HTML页面所在的编码方式发送GET / POST数据是正常的,因此如果您为HTML页面正确指定了字符编码,浏览器应该也通常也会使用相同的格式.
当然,最好确保而不仅仅是假设 – 至少如果你需要确定它. 编辑:要明确这一点 – 确保我的意思是过滤掉与您期望的字符集不匹配的字符.您应该一次只设置,期望和支持一个字符集. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |