![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 18.03.2005
Beiträge: 588
|
benutztes Templatesystem:
[PHP] Ein eigenes Templatesystem schreiben Jetzt hab ich damit einige Probleme bezüglich UTF-8. Wenn ich in den Sprachdateien Umlaute benutze, kommt nur noch mist raus. Als mal versucht, die Sprachdateien als UTF-8 Datei abzuspeichern - erfolglos. Alles andere geht wunderbar, aber Texte aus diesen Sprachdateien nicht. Hatte jemand mal ähnliche Probleme? |
|
|
|
|
|
Nach oben #2 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
|
In meiner Template-Engine nutze ich auch Sprachdateien und schreibe die Umlaute direkt dort hinein. Beim Parsen des Templates wird dann mittels html_entities alles entsprechend in HTML-Code umgewandelt - Funktioniert wunderbar. Ich weiß jetzt allerdings nicht genau, wie die obig beschriebene Template-Engine diesbezüglich arbeitet, aber ich glaube nicht, dass UTF-8 die Lösung ist oder willst du die Umlaute im Klartext an den Browser übermitteln?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #3 |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
Also:
template-Dateien sind als UTF-8 gespeichert mit Umlauten drin ? Du sendest einen passendes Content-Type-Header mit Charset ? Und hast auch mal noch Code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> fehlt vielleicht einer dieser Punkte ? |
|
|
|
|
|
Nach oben #4 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
|
Sind HTML-Dateien nicht trotzdem invalid, wenn der Charset auf UTF-8 gestellt wird und die Umlaute im Klartext drinstehen? Oder ist der HTML-Standard so gut, dass er das unterscheidet? Würde mich mal interessieren!? Denn UTF-8 braucht man ja nicht, wenn man die Umlaute in HTML-Codes umwandelt!?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #5 | |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
Zitat:
Nur btw. in ISO 8859-1 musst du die deutschen Umlaute (äöü und das ß ) auch nicht umwandeln! |
|
|
|
|
|
|
Nach oben #6 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
|
Dass es der Vorteil der Codierung ansich ist, ist mir irgendwie schon klar, was ich mich halt frage ist, ob der Validator des W3C dies berücksichtigt bzw. der Standard HTML ansich und somit auch alle Browser oder ob das auch nur "auf gut Glück" funktioniert!? Habe mich damit noch nicht so wahnsinnig auseinandergesetzt bisher
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #7 | |
|
Benutzer
Registriert seit: 12.08.2006
Beiträge: 38
|
Zitat:
... das nicht HTML ist sondern XHTML, zu erkennen an dem Slash (Endtag). ... bei XHTML der META-Tag für die Zeichenkodierung eigentlich unwichtig ist. Ich vermute, das PHP eine Umwandlung beim speichern vornimmt. @MrNiceGuy Bei XHTML ist UTF-8 sogar der Standardzeichensatz und es könnte ganz auf die Angabe der Codierung verzichtet werden. Gruß Hobbyuser |
|
|
|
|
|
|
Nach oben #8 | ||
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
Zitat:
Zitat:
PHP 4 und 5 unterscheiden keine Kodierungen, es sieht nur Bytes, was auch bei den ganzen Standardfunktionen so zu sehen ist, z.b. strlen liefert z.b. bei Zeichenketten mit UTF-8-Zeichen die mehr als Byte lang sind dementsprechend auch eine höhere Länge zurück. (Wer mit UTF-8 oder anderen Kodierungen die Zeichen mit mehr als einem Byte für einzelne Zeichen nutzen sollten daher die mb_*-Funktionen nutzen.) Daher ist es eher unwahrscheinlich, dass eine der Standard-PHP-Funktionen eine Umwandlung vornimmt. |
||
|
|
|
|
|
Nach oben #9 |
|
Erfahrener Benutzer
Registriert seit: 18.03.2005
Beiträge: 588
|
Also ich habe jetzt in den Sprachdateien (als Notlösung) immer utf8_encode() vor die Zeilen gesetzt. Das war bisher die einzigste Lösung. Alles andere geht auch wunderbar, nur eben die Sprachdateien wollten keine UTF-8-Ausgabe machen.
|
|
|
|
|
|
Nach oben #10 |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
also mal angenommen du hast Sprachdateien die wirklich schon utf8 sind und jagst da utf8_encode drüber, dann muss eigentlich logischer weise dein System irgendwo wieder utf8_decode [oder etwas gleichwertiges] aufrufen sonst würdest du auch wieder Mist ausgegeben bekommen, arbeitest du noch mit irgendeiner anderen extension oder so ? z.b. tidy um den html-code zu formatieren / validieren / etc ?
|
|
|
|
|
|
Nach oben #11 | |
|
Erfahrener Benutzer
Registriert seit: 18.03.2005
Beiträge: 588
|
Zitat:
Natürlich hatte ich auch versucht, diese Dateien als UTF-8 zu speichern. Aber dann hatte ich massenweise Header-Fehler, weil das System vor Header-Anweisungen (Session etc..) irgendwelche nichtsichtbaren Zeichen ausgegeben hat. Umlaute und andere Zeichen gingen aber dennoch nicht. Vielleicht hängt es mit der Art und Weise zusammen, wie die Sprachdateien geparst werden - keine Ahnung, jedenfalls bin ich heute echt ins grübeln gekommen. |
|
|
|
|
|
|
Nach oben #12 | ||
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
Zitat:
Dein Problem nennt sich BOM ! ( http://de.wikipedia.org/wiki/Byte_Order_Mark ) Dein Editor schreibt an den Anfang JEDER UTF-8-Datei ein spezielles Zeichen, das sie quasi als UTF-8 outet. Jetzt musst du nur noch in deinem Editor finden wo man das umstellen kann, dass das Eben nicht geschrieben wird oder einen anderen Editor zum konvertieren nutzen. Das Teil ist nämlich nicht wirklich nötig in deinem Fall. siehe auch dieser Thread: Was ist das denn? oder hier: http://www.phpfriend.de/forum/ftopic63630.html |
||
|
|
|
|
|
Nach oben #13 |
|
Erfahrener Benutzer
Registriert seit: 18.03.2005
Beiträge: 588
|
Jo das ist mir dann beim Online-Editieren der Templates aufgefallen, dass überall ein ? am Anfang steht. Naja jetzt hab ich Wochenende, und werde mir das Montag wieder angucken
Aber danke für den Hinweis! EDIT: Ähmm Moment mal, aber die Zeichen am Anfang haben vorher nicht gestört, erst im zusammenhang mit der Sprachdatei. Die Templates hatte alle so ein Zeichen am Anfang, komisch dass ich da keine Probleme hatte. Achhhh neeee, ich mach jetzt Wochenende ... Geändert von CIX88 (28.03.2008 um 23:23 Uhr). |
|
|
|
|
|
Nach oben #14 | |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
Zitat:
und die Templates wirst du wohl mit fopen / file_get_contents oder sowas laden Deshalb tritt das Problem nur beim includieren auf, dass PHP dann Probleme macht, bei der Ausgabe fallen sie nicht unbedingt auf. |
|
|
|
|
|
|
Nach oben #15 | ||
|
Benutzer
Registriert seit: 12.08.2006
Beiträge: 38
|
Zitat:
Zitat:
Die Zeichenkodierung wird bei XHTML über die XML-Deklaration übermittelt (siehe SelfHTML). Das ist der korrekte Weg. Wobei wie gesagt UTF-8 die Standardkodierung ist und gar nicht angegeben werden müsste. Nachzulesen im gleichen Abschnitt von SelfHTML unter "Beachten Sie:". |
||
|
|
|
|
|
Nach oben #17 | |||
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
OT:
Zitat:
Basti |
|||
|
|
|
|
|
Nach oben #18 | ||||
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
Zitat:
Bei html 4.0 wird das geschlossene meta nicht akzeptiert, beim <br /> kommt im validator auch ne Warning. |
||||
|
|
|
|
|
Nach oben #20 |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
http://www.robo47.net/public/html4/test1.html (ohne /)
http://www.robo47.net/public/html4/test2.html (mit / ohne Leerstelle) http://www.robo47.net/public/html4/test3.html (mit / mit Leerstelle) alle mit noch nem <br /> 1. ist valide mit ner Warning für das <br /> ( http://validator.w3.org/check?verbos...4%2Ftest1.html ) 1. ist invalide mit ner Warning für das <br /> ( http://validator.w3.org/check?verbos...4%2Ftest2.html ) 1. ist invalide mit ner Warning für das <br /> ( http://validator.w3.org/check?verbos...4%2Ftest3.html ) |
|
|
|