$_POST leer auf utf-8-Zeichen

Ich arbeite an einer mehrsprachigen Website mit CodeIgniter. Es ist eine form, Beiträge, Daten-controller, aber $_POST leer ist, wenn ich die Anwendung starten türkischen Zeichen wie öçüÜĞ etc.

Habe ich den Zeichensatz:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Form:

<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 und $this->input->post('editor_tr') gibt leerer, aber ich kann sehen, dass die raw-post mit file_get_contents("php://input").

Dieser arbeitet OK in einem normalen PHP-test, aber nicht die Arbeit mit CodeIgniter. Vielleicht meinen .htaccess-Datei das Problem verursacht, aber keine Ahnung.

Jede Hilfe wird sehr geschätzt.

UPDATE:
Hier ist die Ausgabe für var_dump wie gewünscht.

var_dump($_POST) - Ohne türkische chars

array(3) { ["id"]=> string(12) "news8titleID" ["editor_tr"]=> string(13) "turkish value" ["editor_en"]=> string(13) "english value" }

var_dump($_POST) - Mit türkischen chars (Die Eingabe war: Türkçe karakter, aber es nicht zeigen, bis in der $_POST)

array(3) { ["id"]=> string(12) "news8titleID" ["editor_tr"]=> string(0) "" ["editor_en"]=> string(13) "english value" }

UPDATE 2:
Beim Debuggen habe ich herausgefunden, dass system.core.Input Klasse reinigt die input-Daten auf _clean_input_data Funktion.

//Clean UTF-8 if supported
if (UTF8_ENABLED === TRUE)
{
    $str = $this->uni->clean_string($str);
}

So, bevor die $_POST erreicht hat, um meinen controller, der editor_tr Wert ist bereits gereinigt durch system.core.Utf8 Klasse in dieser Funktion:

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

    return $str;
}
  • haben Sie versucht, mbstring? und die damit verbundene Fehlerbehebung für codeigniter
  • My .htaccess file perhaps is causing the issue, but dunno. Überlegen, liefert es dann ?
  • Sorry, das war ein Tippfehler.
  • Implementiert habe ich mbstring zu meinem codeigniter, nach Ihrem Kommentar, aber noch kein Glück. Es ignoriert das element in der $_POST, wenn es utf-8-chars.
  • Hier ist meine .htaccess-Datei:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
  • Was ist Ihre Ausgabe mit var_dump($_POST) beim senden des string abc, und dann beim senden des string Türkçe? Wenn Sie fügen Sie es zu der Frage, es wird helfen. Ich bin irgendwie interessiert, aber ich vermute auch, es kann ein simpler Fehler auf Ihrem Teil, und das hat nichts zu tun mit Codeigniter. Ich bin auch zu 99,9% sicher, dass .htaccess hat damit nichts zu tun. In Zukunft stellen Sie sicher, dass Sie alle relevanten Informationen zu Ihrer Frage der Inhalte und nicht in einem Kommentar.
  • Vielen Dank für das feedback und in diesen suchen. Ich bearbeitet meine post und enthalten die var_dump Ausgang für beide.
  • Fügen Sie bitte welche version von Codeigniter Sie verwenden als gut. (1.7.2, 2.0.1, 2.0.2, etc) Wenn Sie nicht sicher sind, drucken Sie einfach die Konstante CI_VERSION. Und bitte bestätigen: Sie haben application/config/config.php charset als UTF-8, richtig?
  • Ich bin mit CI 2.0, ja, das ist richtig. Ich UTF-8 verwende in meiner config-Datei: $config['charset'] = 'UTF-8';
  • OK, versuchen Sie eine weitere test bitte: Versuchen Sie, einige dieser Zeichen ♥ ™ ⅓ “ ” und wir werden sehen, ob es ein UTF-8-Problem oder ein problem mit betonten türkische Zeichen nur. Es ist eine lange gedreht, aber ich bin fast die Ideen aus.
  • Er wusste nicht, wie diese Zeichen entweder. Ich bearbeitet meine post oben für mehr info.
  • Wo sind die Zeichen in der URL her? Sind Sie mit der Eingabe direkt in den browser? Hat CI global "Zeichensatz" - Einstellung und wie ist es eingestellt?
  • Ich habe ein Formular und 2 Texteingabefelder innen. Diese Zeichen werden kommen, wenn der Benutzer das Formular sendet. Die Globale Zeichensatz sollte utf-8.
  • Und das Formular ist in eine UTF-8 codierte Seite? Der browser zeigt "UTF-8" in das Menü Codierung? Sie haben versucht, entfernen Sie die voreingestellten Standard-und Eingabe Türkçe von hand?
  • Wollen einfach nur, um zu bestätigen, dass ich immer das gleiche Problem in CI 2.0.2 sowie 2.0.1 auch nach manuell "deaktivieren" die UTF8-system-Bibliothek. Wenn ich behaupte HelloöçüÜĞ, nur Hallo gesendet wird.
  • Ja, zeigt der browser UTF-8 und ich die chars von ahnd, aber noch kein Glück. @Madmartigan Nicht sicher, ob das CI-bug, ich habe kein problem mit der Anzeige UTF-8, aber mit der Eingabe.
  • Ich denke, es ist in der Tat eine CI-bug, ich habe nur versucht, diese mit frischen Standard-Installationen von 1.7.2 und 2.0 und hatte unterschiedliche Ergebnisse. Ich habe auch var_dump($_POST) in der Eingabe-Klasse-Konstruktor (v2.0.2) und war in der Lage, um zu sehen, all die richtigen Zeichen. Dies hat nun verbraucht meine Aufmerksamkeit, und ich möchte, um herauszufinden, was die Ursache für dieses ist, weil es Auswirkungen auf meine Arbeit als gut.
  • Vielen Dank für diese wertvolle Informationen und die Zeit, die Sie verbrachte auf dieser. Da bin ich immer noch in der Entwicklungsphase, ich wird ein upgrade auf 2.0.2 und testen was passiert.
  • Sehr seltsame Nachricht: ich re-checked Versionen 1.7.2 bis 2.0.2 (insgesamt 5 Versionen, Standard-Installation) und jetzt habe ich nicht reproduzieren Sie das problem, obwohl ich konnte, bevor Sie vor wenigen Augenblicken! Noch seltsamer: ich habe versucht, wieder dieselben Zeichen in deinem Beispiel in meinem CMS läuft 2.0.2 und nun plötzlich, Sie funktionieren! Ich habe nichts ändern. Sehr verwirrt und neugierig auf dieses Problem, vielleicht ist es nicht CI verwandt?
  • Noch eins: Stellen Sie sicher, dass Sie das nicht jegliche Prüfung oder prepping Regeln auf dem Gebiet. Dinge wie url_title() Streifen diese Zeichen.
  • Ich führe nicht alle Validierungsregeln. Ich werde versuchen, um zu testen auf einer frischen Installation und hier ein feedback geben.
  • Es scheint spezifisch für CI läuft in PHP 5.3.x auf MAMP. Es tritt nicht in MAMP PHP 5.2.17, noch ist es ein problem auf meinem CentOS LAMP-server mit PHP 5.3.8. Ich würde gerne wissen, welchen Unterschied die Ursache für das problem in MAMP.

InformationsquelleAutor Ozay | 2011-04-25
Schreibe einen Kommentar