我遇到了CodeIgniter过滤掉含有重音字符的POST变量的问题。
这是我的HTML页面:
<!DOCTYPE html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>
<body>
<form action="/test" method="post" accept-charset="utf-8">
<input type="text" name="name" value="" />
<input type="submit" name="submit" value="Submit" />
<form>
</body>
</html>
这是我的'/ test'CodeIgniter控制器的索引函数:
public function index {
echo '<pre>';
print_r($_POST);
die();
}
...输入的名称是“我的名字”,我得到了这个:
Array
(
[name] => my name
[submit] => Submit
)
...但是输入的名称为'mynamé',变量将被传递为空:
Array
(
[name] =>
[submit] => Submit
)
如果我将相同的表单发布到独立的PHP脚本,它可以正常工作。我在配置中看不出任何明显的原因。有人可以帮忙吗?
答案 0 :(得分:2)
在config.php中,更改此 -
/*
|--------------------------------------------------------------------------
| Default Character Set
|--------------------------------------------------------------------------
|
| This determines which character set is used by default in various methods
| that require a character set to be provided.
|
| See http://php.net/htmlspecialchars for a list of supported charsets.
|
*/
$config['charset'] = 'UTF-8';
到其他东西......基本上会发生什么,如果它被设置为UTF-8
CI默认情况下运行所有内容通过过滤器来检查/转换应用程序是否期望UTF-8,以及iconv()的实现是罪魁祸首...请参阅此主题以获取更多信息https://github.com/EllisLab/CodeIgniter/issues/261
答案 1 :(得分:-1)
这是一个特定于MAMP的问题,实际上是这个问题的重复,它提供了解决方案:$_POST empty on utf-8 characters