2 Stimmen

php & mysql konvertieren nicht in unicode

Ich habe Zeichen wie diese auf unserer Website: Fémnyomó

Das ist eine Straßenadresse, die in einer anderen Sprache eingegeben wurde (ich weiß allerdings nicht, in welcher). Hier ist der Aufbau der Datenbank:

mysql 4.1.2log
charset cp1252 West European (latin1)

Ich verwende PHP, aber ohne mbstrings() (obwohl ich auf dieser Adresse keine String-Konvertierungen durchführe, nur echo).

Wenn ich den mysql-Zeichensatz von cp1252 auf UTF-8 änderte und sicherstellte, dass ich Dinge verwendete wie header( 'Content-Type: text/html; charset=UTF-8' ); würde das meine Situation verbessern? Oder sind die Daten im Eimer, weil sie im Zeichensatz cp1252 gespeichert wurden, und ich kann nichts tun? Die ursprüngliche Datenbank wurde im Jahr 2002 erstellt und seitdem verwendet/erweitert. Wir haben Server aufgerüstet und Dumps reimportiert, aber ich muss beschämt zugeben, dass ich nicht viel über Zeichensätze nachgedacht habe.

Wenn es mich erwischt, werde ich wahrscheinlich nur den Text in diesen Feldern entfernen, aber ich möchte Unicode in Zukunft unterstützen, wenn ich also eine ALTER database_name DEFAULT CHARACTER SET utf8; wird das sicherstellen, dass künftige Multibyte-Kodierungen korrekt gespeichert werden, so dass zumindest der Speicherplatz aus der Gleichung herausgenommen wird (so dass ich mich um PHP kümmern kann)?

Danke.

1voto

shamittomar Punkte 44872

1) Konvertieren Sie alle Zeichensätze in UTF8:

ALTER database_name DEFAULT CHARACTER SET utf8;

2) Geben Sie dies vor jeder Abfrage auf der Seite aus:

mysql_query("set names 'utf8'");

3) Verwenden Sie diese Überschrift:

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

4) Fügen Sie diesen Meta-Tag ein:

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

5) Lesen Sie auch dies: http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X