Umwandlung von UTF-8
Christian
- php
Hallo,
ich habe leider ein Problem bei dem ich nicht so recht weiter komme und wollte fragen ob hier vielleicht Jemand rat weiß?
Ich habe ein php module dass aus einer mit UTF-8 codierten Datenbank Daten ausliest und diese jedoch fortan in einem anderen (= nicht-utf-8) Format darstellt so dass alle Sonderzeichen nicht korrekt wieder gegeben werden.
Zu sehen unter detektorforum.de
Ich würde deshalb gerne die UTF-8 Sonderzeichen umcodieren dass einach Ae statt Ä oder ue statt ü etc. ausgegeben wird.
Ich denke das müsste in etwas so gehen:
function conversion ($inhalt) {
$inhalt = str_replace(' Ä','Ae',$inhalt); //Ä
.
.
.
etc.
return ($inhalt);
}
Ist das soweit von der Theorie richtig?
Ich wäre für jeden Hinweis dankbar. Danke!
Hi,
Ich würde deshalb gerne die UTF-8 Sonderzeichen umcodieren dass einach Ae statt Ä oder ue statt ü etc. ausgegeben wird.
ich verstehe Deinen Ansatz nicht ganz. Was spricht dagegen, die Seite in utf-8 auszuliefern oder den Text ggf umzukodieren?
Gruesse, Joachim
Moin!
Ich habe ein php module dass aus einer mit UTF-8 codierten Datenbank Daten ausliest und diese jedoch fortan in einem anderen (= nicht-utf-8) Format darstellt so dass alle Sonderzeichen nicht korrekt wieder gegeben werden.
Dann solltest du dafür sorgen, dass alles bei dir ab sofort nur noch UTF-8 nutzt.
Setzt du den Kommunikationskanal mit der DB auf UTF-8? Query "SET NAMES utf8"?
Und was ist dieses ominöse "andere Format" genau?
Zu sehen unter detektorforum.de
Dem Webbrowser sagen, dass die Zeichencodierung in UTF-8 erfolgt würde alle Umlaute reparieren.
Ich würde deshalb gerne die UTF-8 Sonderzeichen umcodieren dass einach Ae statt Ä oder ue statt ü etc. ausgegeben wird.
Was für eine abstruse Blödsinnsidee...
Ist das soweit von der Theorie richtig?
Absolut falsch.
Stell alles auf UTF-8 um und ein, dann hast du keinerlei Probleme.
- Sven Rautenberg
Stell alles auf UTF-8 um und ein, dann hast du keinerlei Probleme.
utf8_decode() ist die notlösung, wenn die seite in latin 1 ausgegeben werden soll
die frage ist allerdings warum Ä -> Ae konvertiert werden soll Ä ist NICHT utf-8
ein umlaut A in utf-8 repräsentiert in ANSI sieht so aus Ä
zwischen utf-8 und iso 8851-1 ist bei Ä selbst kein unterschied zu erkennen, da alle verwendeten zeichen in mit nur 7 bit ASCII hinterlegt werden
Habe das gleiche Problem.
Hab gelesen, man muss das charset im header auf uff-8 setzen und meta daten auch irgendwie auf utf-8? Probier jetzt auch schon ewig rum, nur funktioniert das irgendwie nicht.
Kann mal jemand posten wie so ein Header aussehen muss, damit sonderzeichen richtig ausgegeben werden? (Also die Sonderzeichen sind in der Datenbank in utf-8 und werden im SQL-Datenbankverwaltungtool auch richtig angezeigt...)
Hi,
Hab gelesen, man muss das charset im header auf uff-8 setzen und meta daten auch irgendwie auf utf-8? Probier jetzt auch schon ewig rum, nur funktioniert das irgendwie nicht.
trallala?
1. Deine Dateien müssen utf-8 codiert vom editor abgespeichert werden (kann nicht jeder editor)
2. Dein ftp-Programm muss die Dateien unverändert übertragen (hab ich schon anders erlebt)
3. Der Server muss die Dateien utf-8 codiert ausliefern (bei Großprovidern sollte das kein Problem sein)
4. Im html die Metaangabe stehen <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Dann sollte alles passen. Ansonsten ist das Wegschreiben und Ausgeben von utf-8 codierten Text kein Problem, sofern Deine MySQL entsprechend angelegt ist (Zeichensatz / Kollation der MySQL-Verbindung:utf-8)
Gruesse, Joachim
- Im html die Metaangabe stehen <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
das istn icht zwingend erforderlich solange der http-header passt - http-equiv greift nur, wenn kein http-header da ist
ist also nur dann sinnvoll, wenn man sich die files auch ohne webserver ansehen möchte
aus sicherheitsgründen würd ichs aber allgemein drinnen lassen
es ist allerdings unbedingt zu beachten, dass man hier auch den mime-typ angibt
hi $name,
das istn icht zwingend erforderlich solange der http-header passt - http-equiv greift nur, wenn kein http-header da ist
der könnte für den OP z.b. so aussehen:
header('Content-Type: text/html; charset=utf-8');
gruss
shadow