Zeichenkodierung - PHP und HTML
1. Die Abschnitte
- Einführung
- Das Grundproblem
- HTML
- CSS
- MySQL Teil 1
- MySQL Teil 2
- PHP
- PHP und HTML
2. Eigentlich
... ist dieser Abschnitt überflüssig wie ein Kropf(f). Denn man kombiniert einfach die Techniken von HTML und PHP. Dazu öffnet ihr
jetzt die Datei php_html.php
im Ordner php_html
und legt los.
3. Die Basis
Dafür bauen wir uns ein normales HTML-Grundgerüst auf und setzen dort die entsprechende Angabe über die Zeichenkodierung.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
<head>
<title>Zeichenkodierung</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
</body>
</html>
4. Der PHP-Code
Den hauen wir einfach innerhalb des <body>
-Tags rein. Aber diesmal darf kein
Header gesetzt werden, sonst knallt es. Außerdem ist das hier überhaupt nicht nötig.
<?php
$con = mysql_connect('localhost','root','');
$db = mysql_select_db('zeichenkodierung');
$code = mysql_query ('SET NAMES utf8');
$res = mysql_query ('SELECT unicode FROM daten');
while ($row = mysql_fetch_assoc($res))
{
echo '<p>'.$row['unicode'].'</p>';
}
?>
5. Zusammenfassung
Ich habe euch hier ein paar einfache Grundregeln gezeigt, mit denen man nach meiner Erfahrung über 90% aller Probleme lösen kann. Darum hier noch mal eine Übersicht.
-
Reine HTML-Dateien müssen auf jeden Fall UTF8-kodiert sein. Darüber hinaus darf auch die entsprechende
charset
-Angabe nicht fehlen. - Bei CSS- und auch JavaScript-Dateien ist das so lange nicht notwendig, so lange man nur Buchstaben aus dem 7bit-ASCII-Code (ANSI) benutzt.
-
Wenn es bei SQL-Abfragen zu Fehlern kommt, so liegt das (fast) immer an der Serverkonfiguration. In dem Fall müsst ihr mit
SET NAMES
arbeiten. -
Auch bei PHP kann es je nach Serverkonfiguration zu unterschiedlichen Problemen kommen. Darum sollte man auf jeden Fall den korrekten
Zeichensatz per
header
setzen und gegebenenfalls die Datei auch noch mit UTF-8 kodieren.