Portal > Foren > PHP > PHP-Programmierung > UTF-8 bei Templatesystem
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 28.03.2008, 13:48 Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard UTF-8 bei Templatesystem

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?
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 16:30 Nach oben    #2
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 687
Standard

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
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 18:45 Nach oben    #3
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.204
Standard

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" />
im HTML drin ?

fehlt vielleicht einer dieser Punkte ?
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 19:41 Nach oben    #4
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 687
Standard

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
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 19:48 Nach oben    #5
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.204
Standard

Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
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!?
Gerade das ist doch der Vorteil bei UTF-8, dass man eben nicht jeden Umlaut oder sonstwas in irgendwelche HTML-Codes umwandeln muss (bis auf neuere Zeichen wie beispielsweise das €-Zeichen).

Nur btw. in ISO 8859-1 musst du die deutschen Umlaute (äöü und das ß ) auch nicht umwandeln!
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 20:04 Nach oben    #6
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 687
Standard

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
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 20:09 Nach oben    #7
Benutzer
 
Registriert seit: 12.08.2006
Beiträge: 38
Standard

Zitat:
Zitat von robo47 Beitrag anzeigen
Und hast auch mal noch
Code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
im HTML drin ?
Dieser Punkt ist völlig egal, weil...

... 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
Hobbyuser ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 20:50 Nach oben    #8
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.204
Standard

Zitat:
Zitat von Hobbyuser Beitrag anzeigen
Zitat:
Zitat von robo47 Beitrag anzeigen
Und hast auch mal noch
Code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
im HTML drin ?
Dieser Punkt ist völlig egal, weil...

... das nicht HTML ist sondern XHTML, zu erkennen an dem Slash (Endtag).
Ist aber gleichzeitig auch valides HTML.

Zitat:
... bei XHTML der META-Tag für die Zeichenkodierung eigentlich unwichtig ist.
Wenn der Webserver falsch konfiguriert ist / das Script kein Charset beim Content-Type-Header mitschickt, gibt es in manchen Browsern ein Fallback, das zuerst auf den via meta übergebenen Content-Type/Charset-Wert überprüft, falls vorhanden den nutzt und dann das Browser-interne [eingestellte] Standard-Charset nutzt. Ausserdem selbst wenn man XHTML nutzt, in den wenigstens fällen schickt man es wirklich als xhtml an den client und der nutzt dann eh den normalen HTML-Parser anstatt nem XML-Parser, weil der wird ja nur benutzt wenn ein application/xhtml+xml oder anderer XML-Header kommt.

Zitat:
Zitat von Hobbyuser Beitrag anzeigen
Ich vermute, das PHP eine Umwandlung beim speichern vornimmt.
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.
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 21:50 Nach oben    #9
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

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.
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 22:00 Nach oben    #10
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.204
Standard

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 ?
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 22:21 Nach oben    #11
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

Zitat:
die wirklich schon utf8 sind
Ja wenn das so wäre, müsste ich nicht diesen Umweg gehen.

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.
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 23:00 Nach oben    #12
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.204
Standard

Zitat:
Zitat von CIX88 Beitrag anzeigen
Zitat:
die wirklich schon utf8 sind
Ja wenn das so wäre, müsste ich nicht diesen Umweg gehen.

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.
Dann ist dein Problem ganz einfach
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
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 23:19 Nach oben    #13
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

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)
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.03.2008, 23:39 Nach oben    #14
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.204
Standard

Zitat:
Zitat von CIX88 Beitrag anzeigen
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 ...
Die Sprachdateien includierst du ja -> wahrscheinlich ohne irgendwo mit ob_start zu arbeiten oder ähnliches
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.
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.03.2008, 05:45 Nach oben    #15
Benutzer
 
Registriert seit: 12.08.2006
Beiträge: 38
Standard

Zitat:
Zitat von robo47
Ist aber gleichzeitig auch valides HTML.
Sorry, aber da irrst du!
Zitat:
Zitat von SelfHTML
In HTML 4.0 gibt es diverse leere Elemente. Das sind Elemente ohne Inhalt. Das Abschluss-Tag ist deshalb verboten, weil die Elemente als inhaltsleer definiert sind.
Quelle
Jedenfalls kann ich da nichts von optional oder zulässig lesen.


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:".
Hobbyuser ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.03.2008, 09:56 Nach oben    #16
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

Ähmmm, XHTML, valides HTML ... Content-Type, war eigentlich nicht Gegenstand meiner Frage.

@robo47
Jo hatte mittels include() und ob_start() probiert, ging aber auch nicht so wirklich.
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.03.2008, 12:29 Nach oben    #17
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

OT:

Zitat:
Zitat von Hobbyuser Beitrag anzeigen
Zitat:
Zitat von robo47
Ist aber gleichzeitig auch valides HTML.
Sorry, aber da irrst du!
Zitat:
Zitat von SelfHTML
In HTML 4.0 gibt es diverse leere Elemente. Das sind Elemente ohne Inhalt. Das Abschluss-Tag ist deshalb verboten, weil die Elemente als inhaltsleer definiert sind.
Quelle
Jedenfalls kann ich da nichts von optional oder zulässig lesen.
Ich bin mir sicher, dass diese Notation (z.B. <br/>) in HTML erlaubt ist, kanns aber nicht belegen bzw. nicht wirklich nachvollziehen, was da wie in SGML definiert ist (mit und ohne Web SGML Adaptations Annex, mit oder ohne Technical Corrigendum 2). Das übersteigt mein Interesse. Aber SelfHTML ist da sicherlich keine Referenz.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.03.2008, 12:45 Nach oben    #18
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.204
Standard

Zitat:
Zitat von Basti Beitrag anzeigen
OT:

Zitat:
Zitat von Hobbyuser Beitrag anzeigen
Zitat:
Zitat von robo47
Ist aber gleichzeitig auch valides HTML.
Sorry, aber da irrst du!
Zitat:
Zitat von SelfHTML
In HTML 4.0 gibt es diverse leere Elemente. Das sind Elemente ohne Inhalt. Das Abschluss-Tag ist deshalb verboten, weil die Elemente als inhaltsleer definiert sind.
Quelle
Jedenfalls kann ich da nichts von optional oder zulässig lesen.
Ich bin mir sicher, dass diese Notation (z.B. <br/>) in HTML erlaubt ist, kanns aber nicht belegen bzw. nicht wirklich nachvollziehen, was da wie in SGML definiert ist (mit und ohne Web SGML Adaptations Annex, mit oder ohne Technical Corrigendum 2). Das übersteigt mein Interesse. Aber SelfHTML ist da sicherlich keine Referenz.

Basti
Muss da Hobbyuser doch recht geben, habs gerade mal getestet

Bei html 4.0 wird das geschlossene meta nicht akzeptiert, beim <br /> kommt im validator auch ne Warning.
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.03.2008, 13:14 Nach oben    #19
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Auch ohne das Leerzeichen? Und in welchem Validator?
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.03.2008, 14:41 Nach oben    #20
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.204
Standard

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 )
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] Ein eigenes Templatesystem schreiben Corvin Tutorials 42 19.03.2008 17:58
Schleifen im Templatesystem Stefan125 PHP-Programmierung 4 19.07.2007 02:36
Templatesystem erweitern Berti PHP-Programmierung 8 06.12.2006 15:43
Templatesystem - Foreach-Schleifen ex³ PHP-Programmierung 9 23.04.2006 13:52
kann ich ein utf 8 file erstellen? mark555 PHP-Programmierung 2 29.12.2005 12:20


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45