Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Entfernen von Unicode-Aufzählungszeichen

Hier kann so viel schief gehen, weil Datenbank, Formularabsendungen und Quellcode-String-Literale alle beteiligt sind. Ich gehe davon aus, dass Sie UTF-8 verwenden möchten, da Sie mit jeder anderen typischen Codierung (CP1252, Latin1) scheitern werden, wenn Sie json_ verwenden möchten oder akzeptieren Sie mehr als ~200 verschiedene Zeichen.

Das erste, was Sie tun müssen, ist entfernen jede Art von Konvertierungscode usw., der mit der Absicht geschrieben wurde, Codierungsprobleme zu beheben. Zum Beispiel utf8_encode , htmlentitites , *_replace .. wie auch immer.

Quellcodierung.

$str = "· Close up the server";

Beim Schreiben des oben Gesagten muss die PHP-Quelldatei physisch in UTF-8 kodiert werden. Wenn Sie Windows verwenden, müssen Sie dies explizit tun oder konfigurieren. UTF-8 geschieht nicht auf magische Weise unter Windows.

Formular wird gesendet

Wenn der Benutzer ein Formular absendet, wird die Nutzlast in der Codierung vorliegen, für die Sie die Seite deklariert haben. Sie können es so deklarieren:

header("Content-Type: text/html; charset=utf-8");

Aber jeder kann tatsächlich beliebige Bytes an Ihren Server senden, daher sollten Sie überprüfen, ob die Eingabe in UTF-8 vorliegt, bevor Sie fortfahren. mb_check_encoding ist gut.

Datenbank

Da Ihre Daten zu diesem Zeitpunkt als UTF-8 eingehen, sind Ihre Eingabezeichenfolgen in UTF-8. Sie müssen dies angeben, nachdem Sie sich mit der Datenbank verbunden haben, indem Sie eine Verbindungscodierung angeben.

mysql_set_charset("utf8"); //After making the connection, and before any queries
//or $mysqli->set_charset( "utf8");

Dadurch liest die Datenbank Ihre Eingabe in UTF-8 und codiert ihre Ausgabe in UTF-8. Sie möchten auch Ihre Spalten/Tabellen/Datenbanken auf UTF-8 setzen.

Unicode-Escape-Sequenzen \uxxxx oder \uhhhh\ullll oder \Uxxxxxxxx werden in PHP nicht unterstützt.