2011-01-13 10 views
1

im weiteren Text, ich auf einige Zeichen als korrekte UTF Zeichen beziehen werden, die UTF-8 kodierten Zeichen in ihm ok Form (á) und falsche UTF Zeichen ist, das ist die gleiche , aber vermasselt UTF-8 Zeichen (z. B. als ý).Weird-UTF-8 MAMP Ausgabe

Also, es gibt CMS läuft auf MAMP - es ist lokal entwickelte Website für den Client. Jetzt gebe ich in der Administration korrekte utf-8 Zeichen ein. Wenn sie auf localhost durchsucht wird, erscheint sie als korrekte utf-8 Zeichen. In der utf-8-codierten mysql-Datei werden jedoch utf-8-Zeichen als falsch angezeigt (in Sequel Pro/phpMyAdmin).

Wenn die Datenbank auf Staging/dev Server verschoben wurde, funktioniert die gleiche DB, die auf MAMP funktioniert, nicht mehr und wird nicht korrekt angezeigt - genauso wie sie in MAMP eingegeben werden.

Wenn ich jedoch Verwaltung (den gleichen Code) auf Staging-Server öffnen und korrekte Zeichen eingeben, werden sie nicht nur normal angezeigt, sondern sie werden auch in mysql als korrekte Zeichen gespeichert.

Ich bin tatsächlich schockiert - der gleiche Code, die gleiche db und es verhält sich immer noch auf andere Weise.

Haben Sie jemals etwas wie bemerkt, d. H. Können Sie mir den Schmerz des Blicks durch Millionen von verschiedenen Eintrittspunkten, wo utf-8 kann durcheinander gebracht werden.

P.S .: Ich denke, das könnte MAMP-bezogen sein (seltsame utf-8-Einstellungen), nicht unbedingt App-bezogen. P.S .: Die App verwendet MySQLi, jede Datei ist UTF-8-codiert:/Das einzige, was unterscheidet, ist, dass auf Mamp ich nur Host/Benutzer mysql Verbindung verwenden, während auf Staging db-Socket eingeführt wird.

Vielen Dank.

+1

Sehen Sie sich die Standardeinstellungen für die Codierung der Server und Clients an. Zum Beispiel können Sie 'SET NAMES utf8' in Ihrem Code ausführen, nachdem Sie eine Verbindung zur Datenbank hergestellt haben, um die Client-Codierung in Runtime zu setzen. – Fanis

Antwort

3

Ich habe das tatsächlich ein paar Mal erlebt. Ich mache folgendes um es zu umgehen.

Sobald ich mit der Datenbank verbinden:

mysql_query("SET NAMES 'utf8'", $db_con); 

Am Anfang jeder Seite:

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

Wenn Sie wirklich pedantisch sein wollen, mit allen möglichen Formen Sie verwenden, um Daten zu schreiben :

<form accept-charset="utf-8"></form> 
+0

Ja, das war's (wenn du nur ein bisschen früher geschrieben hast :) –

+0

Froh ich könnte helfen :) –