Php $\ utf-8字符上的POST为空

Php $\ utf-8字符上的POST为空,php,codeigniter,character-encoding,Php,Codeigniter,Character Encoding,我正在使用CodeIgniter开发一个多语言网站。有一个表单可以将数据发布到控制器,但是当我开始使用土耳其语字符(如öçüÜĞ等)时,$\u POST是空的 我将字符集设置为: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> var_dump($_POST)-带有土耳其字符(输入为:Türkçe karakter,但它没有显示在$_POST中) 更新2: 调试时,我发现,system.co

我正在使用CodeIgniter开发一个多语言网站。有一个表单可以将数据发布到控制器,但是当我开始使用土耳其语字符(如
öçüÜĞ
等)时,
$\u POST
是空的

我将字符集设置为:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
var_dump($_POST)
-带有土耳其字符(输入为:
Türkçe karakter
,但它没有显示在$_POST中)

更新2: 调试时,我发现,
system.core.Input
类在
\u clean\u Input\u data
函数上清理输入数据

// Clean UTF-8 if supported
if (UTF8_ENABLED === TRUE)
{
    $str = $this->uni->clean_string($str);
}
因此,在
$\u POST
到达我的控制器之前,
编辑器\u tr
值已经被该函数中的
system.core.Utf8
类清除:

function clean_string($str)
{
    if ($this->_is_ascii($str) === FALSE)
    {
        $str = @iconv('UTF-8', 'UTF-8//IGNORE', $str);
    }

    return $str;
}

这不是一个答案,但你可能想看一看,看看一切是如何进来的


foreach($_POST as $key => $val)
{
     $post_data[$key] => $val;
}
print_r($post_data);
然后试试CI的帖子


foreach($_POST as $key => $val)
{
     $post_data[$key] => $this->input->post($key);
}

print_r($post_data);

由于评论堆积如山,可能会被忽视,我将发布更多的建议

读者请记住,这是处理$\u POST数据值,而不是在网页上显示数据

此用户似乎有类似的问题:

这里有一个关于类似Bitbucket的报告:

: 删除链接:Ellisplates已向公众关闭此回购协议

也许将此添加到index.php会有所帮助(可能不会):

ini\u集(“默认字符集”、“UTF-8”)


仔细检查并确保没有在该字段上运行任何验证或准备规则。类似于
url\u title()
的操作将删除这些字符。

确保表单标记具有accept字符集:

<form method="post" action="" accept-charset="utf-8">

如果您不想在MAMP安装中使用以前的PHP版本,可以使用:

$\u请求

要获取数据而不是
$\u POST

$\u REQUEST
是一个关联数组,默认情况下包含
$\u GET
$\u POST
$\u COOKIE
的内容


这将返回由于某种原因而中断的所有数据

你试过吗?与<代码> >我的.HTAccess文件相关联的修复可能会引起问题,但邓诺.<代码>考虑是否提供它?@ MordMaTiGaN抱歉,这是一个打印错误。@ J·J i在您的评论后实现了McStudio到我的代码库中,但仍然没有运气。当$\u POST中有utf-8字符时,它会忽略该元素。@Khez这是我的.htaccess文件:
RewriteEngine On RewriteCond%{REQUEST\u FILENAME}-f RewriteCond%{REQUEST_FILENAME}-重写规则^(.*)$index.php/$1[L]
您给出的第一个链接解决了问题。呸。没想到MAMP&PHP会导致这种情况,但你永远也不知道。谢谢!这是一个好消息,感谢您如此迅速地做出响应并及时提供相关细节。祝你的项目好运:)谢谢Madmartigan,希望这能帮助其他遇到同样问题的人。我花了大约2个小时在这个问题上,从来没有想到MAMP会引起这么有趣的问题。谢谢:)这应该是被接受的解决方案,或者至少是更高的投票率。Ellisab提供的bitbucket解决方案(在@WesleyMurch答案中)不再可用,因为Ellisab关闭了回购协议。

foreach($_POST as $key => $val)
{
     $post_data[$key] => $val;
}
print_r($post_data);

foreach($_POST as $key => $val)
{
     $post_data[$key] => $this->input->post($key);
}

print_r($post_data);
<form method="post" action="" accept-charset="utf-8">
$value = utf8_decode($this->input->post('field_name'));