Ich habe eine Anwendung, die sich mit Kunden aus der ganzen Welt befasst, und natürlich möchte ich, dass alles, was in meine Datenbanken gelangt, UTF-8-codiert wird.
Das Hauptproblem für mich ist, dass ich nicht weiß, wie die Quelle einer Zeichenfolge codiert werden soll - es könnte aus einem Textfeld stammen (die Verwendung <form accept-charset="utf-8">
ist nur nützlich, wenn der Benutzer das Formular tatsächlich gesendet hat) oder es könnte sein aus einer hochgeladenen Textdatei, so dass ich wirklich keine Kontrolle über die Eingabe habe.
Was ich brauche, ist eine Funktion oder Klasse, die sicherstellt, dass das Material, das in meine Datenbank gelangt, so weit wie möglich UTF-8-codiert ist. Ich habe es versucht, iconv(mb_detect_encoding($text), "UTF-8", $text);
aber das hat Probleme (wenn die Eingabe "Verlobte" ist, wird "Verlobte" zurückgegeben). Ich habe viele Dinge ausprobiert = /
Beim Hochladen von Dateien gefällt mir die Idee, den Endbenutzer zu bitten, die von ihm verwendete Codierung anzugeben und ihm eine Vorschau der Ausgabe anzuzeigen, aber dies hilft nicht gegen böse Hacker (tatsächlich könnte dies ihr Leben kosten etwas einfacher).
Ich habe die anderen SO-Fragen zu diesem Thema gelesen, aber sie scheinen alle subtile Unterschiede zu haben, wie "Ich muss RSS-Feeds analysieren" oder "Ich kratzte Daten von Websites" (oder "Sie können nicht").
Aber es muss etwas geben, das zumindest einen guten Versuch hat !
UTF-8//IGNORE
als 2. Parameter in zu verwenden iconv
?