Zur Navigation

Zeichen werden falsch dargestellt (UTF-8)

1 Spike

Hallo,

ich habe neulich mal eine Webseite komplett selbst programmiert und habe ein Problem mit der Zeichenkodierung.

Alle Dokumente stehen auf UTF-8 und trozdem werden Texte die darin stehen falsch dargstellt, so wird z.B. aus Serverausfälle: Serverausfälle.

Das Problem habe ich auch wenn ich einen Text aus der Datenbank anzeigen lasse, da sind dann auch die ganzen Umlaute falsch dargestellt.

Was kann ich da machen?

17.12.2011 15:38

2 Jörg

Alle Dokumente stehen auf UTF-8

Was heißt das: dass du die Dateien in deinem Editor mit UTF-8-Kodierung abgespeichert hast, oder dass du eine entsprechende Meta-Angabe eingefügt hast?

Beides sollte der Fall sein, damit die Zeichen korrekt angezeigt werden.

Der Datenbank musst du gegebenenfalls noch mitteilen, in welcher Kodierung du die Daten haben bzw. abspeichern möchtest. Ab PHP 5.2.3 und ab MySQL 5.0.7 kann man hierzu die PHP-Funktion mysql_set_charset() einsetzen. In älteren Versionen kann man stattdessen eine "SET NAMES" Query absetzen.

17.12.2011 15:48

3 Spike

Die Dateien sind auf UTF-8 im Editor eingestellt worden, ich weiss nur leider nicht wie das mit den Meta-Angaben funktioniert.

Die Charset-Funktion von MySQL hatte ich gestern schon probiert, da kam immer ein fehler mit "...params 2 ..." wie genau der hieß weiss ich nicht mehr, ich habe es wie in dem Beispiel gemacht mit nur einer Abfrage:
<?php
$link1 = mysql_connect('localhost','user1','pass1',TRUE);
$link2 = mysql_connect('localhost','user1','pass1',TRUE);

mysql_selectdb('db1',$link1);
mysql_selectdb('db2',$link2);

mysql_set_charset('latin1',$link1);
mysql_set_charset('utf8',$link2);
?>

17.12.2011 22:16

4 Jörg

ich weiss nur leider nicht wie das mit den Meta-Angaben funktioniert

Du baust eine Meta-Angabe für den Content-Type in den Headbereich deiner HTML-Dokumente ein:

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

Alternativ könntest du auch mit header() einen entsprechenden HTTP-Header senden - so macht es z.B. dieses Forum.

Die Charset-Funktion von MySQL hatte ich gestern schon probiert, da kam immer ein fehler mit "...params 2 ..." wie genau der hieß weiss ich nicht mehr

Bei Fehlermeldungen ist der genaue Wortlaut oft hilfreich sowie der Codeabschnitt, auf den die Fehlermeldung sich bezieht

Wenn der zweite Parameter Probleme macht: stimmt denn die Verbindungskennung überein? wenn du nur eine Verbindung aufbaust, kannst du diese eigentlich auch weglassen.

17.12.2011 22:44

5 Spike

Vielen dank, der HTML-Header hat alles in Ordnung gebracht. Kann man den Tag auch abkürzen also nur mit "charset=UTF-8"?

18.12.2011 15:42

6 Jörg

Das Charset kann (serverseitig) nur als Parameter zum Content-Type angegeben werden, einen eigenständigen Header gibt es hierfür nicht.

18.12.2011 17:03

Beitrag schreiben (als Gast)

Beim Verfassen des Beitrages bitte die Forenregeln beachten.





[BBCode-Hilfe]