Я работаю на многоязычном сайте с CodeIgniter.Существует форма, которая отправляет данные в контроллер, но $_POST
пусто, когда я начинаю использовать турецкие символы, такие как öçüÜĞ
и т. Д.
Я установил кодировку в:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Форма:
<form action="translations/save" method="post" accept-charset="utf-8">
<textarea rows="6" cols="60" id="editor_tr" name="editor_tr">Türkçe</textarea>
</form>
$_POST
и $this->input->post('editor_tr')
возвращаются пустыми, но я могу увидеть необработанный пост с file_get_contents("php://input")
.
Этот работает нормально в обычном тесте PHP, ноне работает с CodeIgniter.Возможно, мой файл .htaccess вызывает проблему, но не знаю.
Любая помощь очень ценится.
ОБНОВЛЕНИЕ : Вот вывод для var_dump согласно запросу.
var_dump($_POST)
- Без турецких символов
array(3) { ["id"]=> string(12) "news8titleID" ["editor_tr"]=> string(13) "turkish value" ["editor_en"]=> string(13) "english value" }
var_dump($_POST)
- С турецкими символами (Ввод: Türkçe karakter
, но он не отображается в $ _POST)
array(3) { ["id"]=> string(12) "news8titleID" ["editor_tr"]=> string(0) "" ["editor_en"]=> string(13) "english value" }
ОБНОВЛЕНИЕ 2: При отладке я обнаружил, что класс system.core.Input
очищает входные данные с помощью функции _clean_input_data
.
// Clean UTF-8 if supported
if (UTF8_ENABLED === TRUE)
{
$str = $this->uni->clean_string($str);
}
Итак, до того как $_POST
достигнет моего контроллера, значение editor_tr
уже очищено классом system.core.Utf8
в этой функции:
function clean_string($str)
{
if ($this->_is_ascii($str) === FALSE)
{
$str = @iconv('UTF-8', 'UTF-8//IGNORE', $str);
}
return $str;
}