UTF-8 in HTML und PHP

ghostadmin

Grand Admiral Special
Mitglied seit
11.11.2001
Beiträge
25.208
Renomée
189
Standort
Dahoam Studios
Meine Seite wird wunderbar dargestellt. Ich nutzt ein Suchscript in PHP von:
http://webdesign.weisshart.de/suchen.php

Wenn ich im html header UTF-8 einstelle:
HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Dann stellt das PHP Script die Umlaute nicht richtig dar (mit einem ?)

Stelle ich westeuropäisch ein:

HTML:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Dann funktioniert es, aber wie kann man das unter UTF-8 lauffähig machen?
Dazu gibt es Probleme mit BOM wenn man westeuropäisch einstellt.

Das PHP Script der Suchfunktion ist dazu noch vom Autor verschlüsselt.

Sonstige Header die ich auf der Seite habe:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">

Auf dem Apache habe ich auch schon rumprobiert, da ist:

AddDefaultCharset off
AddHandler php5-script .html .php .php5
AddType application/x-httpd-php .html .php .php5

Noch dazu läuft die MySQL Datenbank auch mit UTF-8
 
Zuletzt bearbeitet:
Salü Ghostadmin

Hab mir aus einem anderen Beitrag hier im Forum den Link zu deiner (schönen!) Site gesucht ;)

Da ist mir aufgefallen, dass im Code drin steht:
Code:
<meta name="Generator" content="notepad" />
Hast du den Code wirklich mit dem "notepad" von MS Windows geschrieben? Wenn ja - hast du die .html Dateien auch mit UTF-8 Codierung gespeichert?

Per default ist das nämlich auf "Ansi", was bei mir "text/plain charset=iso-8859-1" ergibt.
original.aspx


PS: Hast du vollen shell-zugriff auf die Maschine, wo die website liegt? (Ghostadmin impliziert das irgendwie ;D)
LG
 
Ja der "Server" steht 2m unter mir ;)

Das "notepad" habe ich nur so zum Spaß reingeschrieben. Um die Seiten mit iso-8859-1 richtig darzustellen, habe ich eh schon alles mit notepad++ nach UTF-8 ohne BOM umgewandelt. Mit UTF-8 wird eh alles richtig dargestellt, nur eben der Output von der Suche nicht:

http://xrated.dyndns.org/test/suchen.php?q=test

Etwas seltsam ist, wenn ich die suchen.php nach UTF8 ohne BOM umwandeln will mit Notepad++ steht dann immer Ansi da. Aber normal UTF-8 mit BOM funktioniert.
 
Zuletzt bearbeitet:
Hallo

Also funktioniert die Suche nachher richtig, wenn du sie mit UTF-8 mit BOM encodierst? Das habe ich jetzt nicht genau verstanden.

PS: Auch wenns nichts bringt, aber wenn man die Seite (mit den Suchresultaten) im Browser zwangsweise mit ISO-8859-1 betrachtet, ist die Darstellung "richtig".

Wegen dem Server - was sagt denn beispielsweise ein "file -ib xyz.html" bzw. ein "file -ib xyz.php"?
 
Wo kommt der Such-Output her?

Aufgrund der Komplexität der Seite geh ich jetzt mal von einer Datenbank aus. Sind die Daten da drin UTF8-codiert? Falls nicht müsstest du die nach dem Auslesen noch umwandeln.

Gruß, Chris
 
Also viele Seiten haben ja die Endung .html, deshalb bin ich von statischem XHTML ausgegangen... Ich weiss, dass man auch .php Code(und entsprechend mysql) in .html seiten ausführen kann. Aber denke doch, dass es statisch ist. Aber Ghostadmin spricht im Eingangsposting auch von mysql... Wo / Wie hängt allenfalls mysql mit drin?
 
Also die Seiten sind .html mit Endung aber da steckt php code drin, was ich im Apache2 eingestellt habe, daß der .html nach php durchsuchen und auswerten soll.

Die Suchfunktion an sich, benutzt keine Datenbank. Die scannt quasi alle files auf dem Server die man angibt.

Aber: Wenn man irgendwas sucht und dann manuell im Browser von UTF-8 auf iso-8859-1 umstellt, ja dann wird alles richtig angezeigt.

Die Seiten selbst, werden mit UTF-8 aber normal dargestellt. Nur eben der Suchoutput zeigt es falsch an.
 
Zuletzt bearbeitet:
Dann ist der Suchoutput eben ASCII-codiert. Wenn du deine Seite als UTF8 an den Browser auslieferst musst du dann noch den Suchoutput umwandeln, z.B. mit "utf8_encode()".

Gruß, Chris
 
Also in der readme finde ich keinen Hinweis auf UTF-8 (außer einen Bugfix-Kommentar). Aber da das Skript per include() eingebunden wird hast du quasi kaum eine Möglichkeit das Ergebnis noch zu beeinflussen.

Das lässt 3 Möglichkeiten:
- Du verzichtest auf UTF-8
- Du wendest dich an den Autor
- Du findest ein anderes Suchskript

Soweit ich das sehen konnte ist das Ding von 2005, damals haben sich nur ziemlich wenig Leute überhaupt um UTF-8 gekümmert.

Gruß, Chris
 
Die letzte Version ist von gestern ;)
.
EDIT :
.

Wenn ich in der HTML Seite die Umlaute normal hinschreibe, also z.B. ü statt &uuml; dann funktioniert die Suchfunktion, scheint auch W3C konform zu sein.

Was sagt ihr dazu?
 
musste ich nach einem serverumzug auch machen:
alle dateien UTF-8 encodiert ohne BOM speichern.
lief aber auch nicht wirklich...
meine lösung war das ich dann per .htaccess den server dazu zwingen musste UTF-8 anzuzeigen.

.htaccess:

AddCharset UTF-8 .html
...
...

usw....
damit lief es dann.
keine ahnungs obs dir hilft.

gruß :-)
 
Zuletzt bearbeitet:
.
EDIT :
.

Wenn ich in der HTML Seite die Umlaute normal hinschreibe, also z.B. ü statt &uuml; dann funktioniert die Suchfunktion, scheint auch W3C konform zu sein.

Was sagt ihr dazu?

Hallo Ghostadmin

Aaaah... du hast nach wie vor HTML-Entities verwendet? Also eigentlich sollte man die in XHTML nicht mehr verwenden, weil die Entities in XHTML XML kompatibel gemacht wurden. Es gibt nur noch folgende definierten Name-Entities:
Code:
 &quot; =>   "
&amp;  =>   &
&lt;       =>      <
&gt;   =>   >
Die o.g. solltest du auch verwenden - für den Rest kannst du ruhig direkt üöä ÜÖÄ schreiben, oder die dezimale Schreibeweise: "& #228 ;" z.B. für &auml; (ohne spaces, aber der Foreneditor würde sie sonst direkt abwandeln)

Hier noch eine Tabelle/ein Artikel bei der englischen Wikipedia

LG

PS: Da XHTML modular aufgebaut ist, können andere Entitäten doch wieder importiert werden über die "Module". Aber ich halte mich eigentlich an o.g. Empfehlung und schreibe die Umlauts direkt in den Code. Ist ja auch viel einfacher. Korrekt ist es auch!
 
Zuletzt bearbeitet:
Zurück
Oben Unten