UTF-8 ändert Frame Set-up
Chris
- html
0 Felix Riesterer0 Gunnar Bittersmann3 dedlfix0 Chris
0 Struppi
Hallo,
ich stelle gerade meine Website von ISO-8859-1 auf UTF-8 um.
Meine Website ist aus drei Frame-Bereichen aufgebaut: "oben", "links", "rechts".
Wenn ich im Bereich "oben" auf einen Link z.B. Forum geklickt habe, dann hat sich dieses innerhalb des Bereiches "links" geöffnet (<td><A HREF="http://www.website/forum.html" TARGET=rechts><font face="arial" size=2><b>Forum</A></b></font></td>).
Nach der Umstellung des Frame-Bereichs "oben" auf UTF-8 öffnet sich aber nun bei einem Klick auf den Button Forum dieses nicht mehr innerhalb des Bereichs "links", sondern als neue Seite im Browser.
Ich habe nicht gewußt, dass eine Umstellung des Zeichencodes von ISO auf UTF so eine Auswirkung haben kann. Was ist der Hintergrund hierfür und was muß man machen, so dass sich z.B. forum.html wieder wie bei ISO-8859-1 innerhalb des Frame-Bereichs "links" öffnet?
Zur Info: Die Framestruktur der Website soll beibehalten werden, obwohl ich weiß dass dies nicht als vorteilhaft gesehen wird. Ich möchte nur das o.g. Problem lösen.
Schon vorab vielen Dank für den Support.
Gruß
Chris
Lieber Chris,
ich stelle gerade meine Website von ISO-8859-1 auf UTF-8 um.
... aha...
Meine Website ist aus drei Frame-Bereichen aufgebaut
na, dann stelle doch auch gleich noch auf eine Frame-lose Seite um!
Wenn ich im Bereich "oben" auf einen Link z.B. Forum geklickt habe, dann hat sich dieses innerhalb des Bereiches "links" geöffnet
Du hast also die Navigation nur einmal schreiben und zentral verwalten wollen? Dazu braucht es keine Frames.
FAQ: Wie kann ich Teile meiner Webseite auslagern?
Liebe Grüße,
Felix Riesterer.
@@Chris:
nuqneH
Nach der Umstellung des Frame-Bereichs "oben" auf UTF-8 öffnet sich aber nun bei einem Klick auf den Button Forum dieses nicht mehr innerhalb des Bereichs "links", sondern als neue Seite im Browser.
Schwer vorstellbar.
Ich habe nicht gewußt, dass eine Umstellung des Zeichencodes von ISO auf UTF so eine Auswirkung haben kann.
Ich auch nicht. BTW, du meinst Zeichencodierung, nicht Zeichencode.
Was ist der Hintergrund hierfür
Den hältst du bisher verborgen.
Zur Info: Die Framestruktur der Website soll beibehalten werden, obwohl ich weiß dass dies nicht als vorteilhaft gesehen wird.
Warum willst du eine schlechte Lösung beibehalten? Und das auch noch, obwohl du weist, dass sie schlecht ist?
Qapla'
Hi!
Wenn ich im Bereich "oben" auf einen Link z.B. Forum geklickt habe, dann hat sich dieses innerhalb des Bereiches "links" geöffnet (<td><A HREF="http://www.website/forum.html" TARGET=rechts><font face="arial" size=2><b>Forum</A></b></font></td>).
Deine Beschreibung widerspricht deinem Code. Es sei denn, du hast die linke Seite "rechts" genannt. Sinnvoller wäre es, die Frames nach ihrem Zweck zu benennen, so dass beispielsweise auch Screenreader nutzbare Informationen an ihre Anwender geben können, wenn sie den Frame-Namen vorlesen.
Nach der Umstellung des Frame-Bereichs "oben" auf UTF-8 öffnet sich aber nun bei einem Klick auf den Button Forum dieses nicht mehr innerhalb des Bereichs "links", sondern als neue Seite im Browser.
Das bedeutet, dass der Name des Frames nicht mit der Angabe im Target übereinstimmt. Das Target findet keinen Frame mit diesem Namen und öffnet daraufhin ein neues Fenster/Tab/wasauchimmer.
Sowas im Zusammenhang mit UTF-8-Umstellung kann meiner Meinung nach nur bedeuten, dass du Namen mit Nicht-ASCII-Zeichen nimmst und diese nicht in der angegebenen Kodierung gespeichert wurden, so dass der Browser unterschiedliche Zeichen daraus interpretiert. Das kann passieren, wenn du einfach nur die charset-Angabe im Content-Type-Header (oder Metaelement) änderst, aber die Datei gar nicht gemäß der neuen Kodierung umkodierst.
Wenn das so wäre, dann hieße das jedoch auch, dass du nicht "oben", "links" und "rechts" als Namen verwendet hast, denn damit kann meine Vermutung nicht Wirklichkeit sein. Oder du hast bei der Benennung eine Änderung vorgenommen, die du nicht bemerkt hast und die Kodierung hat damit nichts zu tun.
Ich habe nicht gewußt, dass eine Umstellung des Zeichencodes von ISO auf UTF so eine Auswirkung haben kann.
Dir ist aber schon klar, dass man nicht einfach nur ein paar Angaben zu ändern braucht. Denn der Inhalt eines Briefumschlags ändert sich auch nicht, wenn man nur was anderes draufschreibt.
Was ist der Hintergrund hierfür und was muß man machen, so dass sich z.B. forum.html wieder wie bei ISO-8859-1 innerhalb des Frame-Bereichs "links" öffnet?
Um diese Frage beantworten zu können, muss man die Ursache kennen. Aus deiner Beschreibung kann ich sie nicht entnehmen, da sie mir nicht auf das Problem zu passen scheint. Ein Online-Beispiel, bei dem man das Problem nachvollziehen kann, wäre nützlich.
Noch ein Hinweis. Bitte verwende keine Phantasie-Domainnamen sondern solche, die für Beispiele vorgesehenen Domains. Die kommen dann auch nicht mit real existierenden Domains ins Gehege.
Lo!
Hallo,
erstmal vielen Dank für die Antworten.
Deine Beschreibung widerspricht deinem Code. Es sei denn, du hast die linke Seite "rechts" genannt. Sinnvoller wäre es, die Frames nach ihrem Zweck zu benennen, so dass beispielsweise auch Screenreader nutzbare Informationen an ihre Anwender geben können, wenn sie den Frame-Namen vorlesen.
"rechts" heißt in diesem Fall nicht die Seitenbenennung, sondern das Target, d.h. statt target="_blank" target=rechts
Das bedeutet, dass der Name des Frames nicht mit der Angabe im Target übereinstimmt. Das Target findet keinen Frame mit diesem Namen und öffnet daraufhin ein neues Fenster/Tab/wasauchimmer.
das habe ich nochmal geprüft und es passt alles überein; hat ja bei ISO-8859-1 auch gut geklappt
Sowas im Zusammenhang mit UTF-8-Umstellung kann meiner Meinung nach nur bedeuten, dass du Namen mit Nicht-ASCII-Zeichen nimmst und diese nicht in der angegebenen Kodierung gespeichert wurden, so dass der Browser unterschiedliche Zeichen daraus interpretiert. Das kann passieren, wenn du einfach nur die charset-Angabe im Content-Type-Header (oder Metaelement) änderst, aber die Datei gar nicht gemäß der neuen Kodierung umkodierst.
habe ich ordnungsgemäß über Notpad++ mit Kodierungsumstellung auf UTF-8 ohne BOM durchgeführt und entsprechend abgespeichert
Wenn das so wäre, dann hieße das jedoch auch, dass du nicht "oben", "links" und "rechts" als Namen verwendet hast, denn damit kann meine Vermutung nicht Wirklichkeit sein. Oder du hast bei der Benennung eine Änderung vorgenommen, die du nicht bemerkt hast und die Kodierung hat damit nichts zu tun.
dies sind nur Beispiele, im richtigen Quelltext habe ich sinngebende Bezeichnungen verwendet
Dir ist aber schon klar, dass man nicht einfach nur ein paar Angaben zu ändern braucht. Denn der Inhalt eines Briefumschlags ändert sich auch nicht, wenn man nur was anderes draufschreibt.
ja, siehe oben
Grundsätzlich baut sich mein Frameset wie folgt auf:
<FRAMESET rows="175,*" frameBorder=0 frameSpacing=0><FRAME name="ganzoben" src="http://www.example.de/xxx.htm">
<FRAMESET border=0 cols="800,*"><FRAME name="rechts" noResize src="http://www.example.de/yyy.htm">
<frameset cols="120,1" border=0 framespacing=0>
<FRAME name="aussen" noResize src="http://www.example.de/zzz.htm">
<frameset onLoad="SeiteLaden(); return true;" cols="25%,*">
Mir ist dabei klar das Frames kein Optimum ist, die Seite aber sehr umfangreich ist und ich in Zukunft natürlich über Auslagerungen nachdenken kann (bereits für CSS geschehen), aber die Seite baut sich hauptsächlich mit htm und nicht php auf (siehe genanntes Beispiel bzgl. Auslagerungen) und somit ist der beschrieben Weg so nicht darstellbar.
Aber wie gesagt, dies ist eine andere Diskussion. Hier geht es um die Lösung für Frames.
Deshalb noch einmal der Sachverhalt: Jediglich die (korrekte) Umstellung von ISO auf UTF-8 hat das Öffnen der Links (aus dem Frame set-up "ganzoben") im ursprünglich "linken" Bereich der Website nicht mehr ermöglicht und führt derzeit zu einem Öffnen in einem extra Fenster. Dies ist für mich der komische Sachverhalt, den es zu klären gilt.
Ich hoffe dies stellt die Sache noch einmal klarer dar.
Danke für den Support.
Gruß
Chris
Hi,
"rechts" heißt in diesem Fall nicht die Seitenbenennung, sondern das Target, d.h. statt target="_blank" target=rechts
ja, also doch der Fenstername.
Wenn das so wäre, dann hieße das jedoch auch, dass du nicht "oben", "links" und "rechts" als Namen verwendet hast, denn damit kann meine Vermutung nicht Wirklichkeit sein. Oder du hast bei der Benennung eine Änderung vorgenommen, die du nicht bemerkt hast und die Kodierung hat damit nichts zu tun.
dies sind nur Beispiele, im richtigen Quelltext habe ich sinngebende Bezeichnungen verwendet
Und warum dann hier fürs Beispiel nicht?!
Grundsätzlich baut sich mein Frameset wie folgt auf:
Man möge mir verzeihen, dass ich dein Durcheinander erstmal ein bisschen übersichtlicher formatiert und eingerückt habe. (Die Einrückung um zwei Leerzeichen am Beginn wegen des Forums-Bugs, dass ein einzelnes Leerzeichen am Beginn einer Zitatzeile unterschlagen wird.)
<FRAMESET rows="175,*" frameBorder=0 frameSpacing=0>
<FRAME name="ganzoben" src="http://www.example.de/xxx.htm">
<FRAMESET border=0 cols="800,*">
<FRAME name="rechts" noResize src="http://www.example.de/yyy.htm">
<frameset cols="120,1" border=0 framespacing=0>
<FRAME name="aussen" noResize src="http://www.example.de/zzz.htm">
<frameset onLoad="SeiteLaden(); return true;" cols="25%,*">
Schließt du all die angefangenen framesets auch irgendwann wieder?
Abgesehen davon: Hat der abenteuerliche Mix aus Groß- und Kleinschreibung einen Sinn - außer, das Lesen zu erschweren? Es ist eine schöne Konvention (in XHTML sogar eine Vorschrift), alle Element- und Attributnamen klein zu schreiben.
Mir ist dabei klar das Frames kein Optimum ist
Sowas nennt man auch Euphemismus.
Deshalb noch einmal der Sachverhalt: Jediglich die (korrekte) Umstellung von ISO auf UTF-8 hat das Öffnen der Links (aus dem Frame set-up "ganzoben") im ursprünglich "linken" Bereich der Website nicht mehr ermöglicht und führt derzeit zu einem Öffnen in einem extra Fenster. Dies ist für mich der komische Sachverhalt, den es zu klären gilt.
Ich hoffe dies stellt die Sache noch einmal klarer dar.
Nein. Ein Online-Beispiel, an dem man sich das Malheur "live" ansehen kann, könnte Klarheit bringen.
Ciao,
Martin
Hallo,
noch einmal das Beispiel so ausführlich wie möglich und zur Verdeutlichung:
a) dar Frameset-Ausschnitt aus der index.htm
<frameset rows="175,*" frameborder=0 framespacing=0>
<frame name="ganzoben" src="http://www.example.de/partner.htm">
<frameset border=0 cols="800,*">
<frame name="rechts" noResize src="http://www.example.de/haus.htm">
<frameset cols="120,1" border=0 framespacing=0>
<frame name="aussen" noResize src="http://www.example.de/bau.htm">
<frameset onLoad="SeiteLaden(); return true;" cols="25%,*">
<noframes>
<a href="http://www.example.de/haus.htm" target="rechts">haus</a><br>
<a href="http://www.example.de/bau.htm" target="aussen">bau</a><br>
<a href="http://www.example.de/partner.htm" target="ganzoben">partner</a><br>
</noframes>
</frameset>
b) die Link Button aus der htm-Seite:
<td><A HREF="http://www.example.de/haus.htm" TARGET=rechts><font face="arial" size=2><b>Startseite</A></b></font></td>
<td width=8></td>
<td><A HREF="http://www.example.de/nachrichten.htm" TARGET=rechts><font face="arial" size=2><b>Nachrichten</A></b></font></td>
<td width=8></td>
<td><A HREF="http://www.example.de/themen.htm" TARGET=rechts><font face="arial" size=2><b>Themen</A></b></font></td>
<td width=8></td>
etc.
d.h. vor der Umstellung auf UTF-8 hat sich z.B. beim Klick auf Nachrichten die Seite nachrichten.htm innerhalb des Frameset-Bereichs "rechts" geöffnet und nun wird wie gesagt ein eigenes Fenster mit nachrichten.htm geöffnet.
Das ist die Thematik für die ich eine Abhilfe suche.
Gruß
Chris
@@Chris:
nuqneH
noch einmal das Beispiel so ausführlich wie möglich und zur Verdeutlichung:
[Quältext]
Welcher Teil von „Nein. Ein Online-Beispiel, an dem man sich das Malheur "live" ansehen kann, könnte Klarheit bringen“ war für dich unverständlich?
Qapla'
...und um nun dem Ganzen noch die Krone aufzusetzen muß ich nach einigem probieren feststellen, dass das ganze Konstrukt nur unter ganz bestimmten Prämissen läuft:
a) die index.htm muß wie folgt aufgebaut sein (kann aber in UTF-8 codiert sein):
<FRAMESET rows="175,*" frameBorder=0 frameSpacing=0><FRAME name="ganzoben" src="http://www.example.de/partner.htm">
<FRAMESET border=0 cols="800,*"><FRAME name="rechts" noResize src="http://www.example.de/haus.htm">
<frameset cols="120,1" border=0 framespacing=0>
<FRAME name="aussen" noResize src="http://www.example.de/bau.htm">
<frameset onLoad="SeiteLaden(); return true;" cols="25%,*">
<noframes>
<a href="http://www.example.de/haus.htm" target="rechts">haus</a><br>
<a href="http://www.example.de/bau.htm" target="aussen">bau</a><br>
<a href="http://www.example.de/partner.htm" target="ganzoben">partner</a><br>
</noframes>
</FRAMESET>
b) z.B. die example.de/partner.htm die mit den Buttons zur Navigation ausgestattet ist, muß wie folgt aufgebaut sein und muß derzeit zwingend in ISO-8859-1 sein um zu funktionieren:
<td><A HREF="http://www.example.de/haus.htm" TARGET=rechts><font face="arial" size=2><b>Startseite</A></b></font></td>
<td width=8></td>
<td><A HREF="http://www.example.de/nachrichten.htm" TARGET=rechts><font face="arial" size=2><b>Nachrichten</A></b></font></td>
<td width=8></td>
<td><a HREF="http://www.example.de/links.htm" TARGET=rechts><font face="arial" size=2><b>Links</A></b></font></td>
<td width=8></td>
etc.
Verstehe das einer wer will. Das ganze Konstrukt funktioniert nur unter o.g. genannten Prämissen. D.h. example.de/partner.htm muß in ISO codiert sein und TARGET=rechts enthalten. Weicht man davon ab (d.h. versucht man auch target="_x" begrifflich klar zu definieren), öffnen die Inhalte im Hauptfenster nicht korrekt?!?
Aber vielleicht gibt es jemanden der hier durchsteigt und ggf. selbst Erfahrungen gemacht hat. Irgendwie muß es nach meiner Meinung mit dem Begriff "rechts" für das Hauptfenster und "rechts" beim TARGET zu tun habe, so dass die Website genau unter diesen Umständen so gut funktioniert.
Ich wäre über eine gute Idee sehr dankbar.
Gruß
Chris
Lieber Chris,
...und um nun dem Ganzen noch die Krone aufzusetzen muß
.. .ich Dir bescheinigen, dass es eine Zumutung ist, Deinen Code-Salat hier auch nur anzuschauen (lesen tu ich ihn absichtlich nicht)!
Aber vielleicht gibt es jemanden der hier durchsteigt
Wenn Du Glück hast, dann hat sich ein armer Weltverbesserer noch immer nicht von Deinem Code-Gemüse vergraulen lassen und tut sich diesen Wahnsinn tatsächlich an. Aber warum Du Martins wiederholte leise Bitte um ein live-Beispiel so hartnäckig ignorierst und uns stattdessen ungebremst seitenweise diesen Müll an Code postest, leuchtet mir nicht ein.
Irgendwie muß es nach meiner Meinung mit dem Begriff "rechts" für das Hauptfenster und "rechts" beim TARGET zu tun habe, so dass die Website genau unter diesen Umständen so gut funktioniert.
Ach wie schön, dass jeder seine Meinung haben darf. Werde glücklich mit der Deinen.
Ich wäre über eine gute Idee sehr dankbar.
Wärst Du eben nicht. Die wirklich guten Ideen lehnst Du ja aus Faulheit (oder Angst vor dem einzig Richtigen, nämlich einem Neuanfang) ab!
Liebe Grüße,
Felix Riesterer.
[latex]Mae govannen![/latex]
Wenn Du Glück hast, dann hat sich ein armer Weltverbesserer noch immer nicht von Deinem Code-Gemüse vergraulen lassen und tut sich diesen Wahnsinn tatsächlich an. Aber warum Du Martins wiederholte leise Bitte um ein live-Beispiel so hartnäckig ignorierst und uns stattdessen ungebremst seitenweise diesen Müll an Code postest, leuchtet mir nicht ein.
Werter Herr, Ihr vergaßet des Junker Martin Gesuch, den Code um schließende Tags zu erweitern. ;)
Ich ergänze, daß es wohl ziemlich sinnfrei sein dürfte, hier weiter bezüglich irgendwelcher Ursachen zu irgendwelchen Fehlern herumraten zu wollen, solange der Code nicht wenigstens den Validator erfolgreich überstanden hat, unabhängig davon, ob es im Nachhinein den konkreten Fehler betrifft oder nicht.
Cü,
Kai
Ich ergänze, daß es wohl ziemlich sinnfrei sein dürfte, hier weiter bezüglich irgendwelcher Ursachen zu irgendwelchen Fehlern herumraten zu wollen, solange der Code nicht wenigstens den Validator erfolgreich überstanden hat, unabhängig davon, ob es im Nachhinein den konkreten Fehler betrifft oder nicht.
Meine Rede.
Struppi.
d.h. vor der Umstellung auf UTF-8 hat sich z.B. beim Klick auf Nachrichten die Seite nachrichten.htm innerhalb des Frameset-Bereichs "rechts" geöffnet und nun wird wie gesagt ein eigenes Fenster mit nachrichten.htm geöffnet.
Dann sag doch mal, warum du umstellen möchtest?
Struppi.
Wenn ich im Bereich "oben" auf einen Link z.B. Forum geklickt habe, dann hat sich dieses innerhalb des Bereiches "links" geöffnet (<td><A HREF="http://www.website/forum.html" TARGET=rechts><font face="arial" size=2><b>Forum</A></b></font></td>).
Anstatt dir über den Zeichensatz Gedanken zu machen(wenn du bisher mit ISO ausgekommen bist, wozu brauchst du utf-8?), würde ich das HTML in Ordnung bringen. Das was du da zeigst, sieht aus wie HTML aus der tiefsten Internetsteinzeit. Dazu kommt, das schon dieser kurze Abschnitt voller Fehler ist.
Struppi.
@@Struppi:
nuqneH
Anstatt dir über den Zeichensatz Gedanken zu machen(wenn du bisher mit ISO ausgekommen bist, wozu brauchst du utf-8?), würde ich das HTML in Ordnung bringen. Das was du da zeigst, sieht aus wie HTML aus der tiefsten Internetsteinzeit.
Die ISO-8859-Zeichencodierungen sind auch tiefste Internetsteinzeit. Schon für ordentlichen deutschen Text reichen sie nicht aus: Gedankenstriche, Anführungszeichen.
Qapla'
Die ISO-8859-Zeichencodierungen sind auch tiefste Internetsteinzeit. Schon für ordentlichen deutschen Text reichen sie nicht aus: Gedankenstriche, Anführungszeichen.
Deshalb gibt's dafür ja auch Entities
Struppi.
@@Struppi:
nuqneH
Die ISO-8859-Zeichencodierungen sind auch tiefste Internetsteinzeit. Schon für ordentlichen deutschen Text reichen sie nicht aus: Gedankenstriche, Anführungszeichen.
Deshalb gibt's dafür ja auch Entities
Nein. Deshalb gibt's dafür ja UTF-8, damit man keine Entity-Referenzen (oder gar numerische Referenzen) verwenden muss.
Oft genug zitiert: „Es ist fast immer besser, eine Zeichencodierung zu benutzen, die es erlaubt, die Zeichen in ihrer normalen Form zu verwenden, anstatt Zeichen-Entity-Referenzen oder numerische Zeichenreferenzen zu verwenden. Die Verwendung von Escapes macht den Quelltext schlechter lesbar und schwerer zu pflegen […]“ [ESCAPES]
Qapla'
Die ISO-8859-Zeichencodierungen sind auch tiefste Internetsteinzeit. Schon für ordentlichen deutschen Text reichen sie nicht aus: Gedankenstriche, Anführungszeichen.
Deshalb gibt's dafür ja auch Entities
Nein. Deshalb gibt's dafür ja UTF-8, damit man keine Entity-Referenzen (oder gar numerische Referenzen) verwenden muss.
Das habe ich auch nie gesagt, sondern dass es sie gibt, weil die ISO kodierungen u.U. nicht ausreichend sind.
Oft genug zitiert: „Es ist fast immer besser, ..
Du kennst die Bedeutung des Worte 'fast' in dem Kontext?
Bei dem HTML Code, wüßte ich nicht, was die Umstellung der Kodierung für eine Verbesserung bringen würde.
Struppi.
@@Struppi:
nuqneH
[…] weil die ISO kodierungen u.U. nicht ausreichend sind.
Eben. Deshalb sollte man sie nicht verwenden.
Oft genug zitiert: „Es ist fast immer besser, ..
Du kennst die Bedeutung des Worte 'fast' in dem Kontext?
Ja: 'fast' = 'so gut wie', 'eigentlich'.
Bei dem HTML Code, wüßte ich nicht, was die Umstellung der Kodierung für eine Verbesserung bringen würde.
Wir haben nicht den vollständigen Inhalt zu sehen bekommen. Generell ist die Umstellung auf UTF-8 anzuraten. Man muss es aber richtig machen.
Qapla'
Lieber Gunnar,
Oft genug zitiert: „Es ist fast immer besser, ..
Du kennst die Bedeutung des Worte 'fast' in dem Kontext?
Ja: 'fast' = 'so gut wie', 'eigentlich'.
"fast immer" != "ausnahmslos immer"
"fast immer" == "mit Ausnahmen"
Liebe Grüße,
Felix Riesterer.
@@Felix Riesterer:
nuqneH
"fast immer" != "ausnahmslos immer"
"fast immer" == "mit Ausnahmen"
Jaja, schon gut.
Kannst du mal mit einem Beispiel aufwarten, wann es nicht sinnvoll sein sollte, richtige Zeichen anstatt Escapes zu verwenden?
(Gemeint ist Fließtext [^&<] in HTML; nicht Kontexte, wo escapet werden muss.)
Qapla'
Hi!
Kannst du mal mit einem Beispiel aufwarten, wann es nicht sinnvoll sein sollte, richtige Zeichen anstatt Escapes zu verwenden?
Findest du die in dem von dir übersetzten und verlinkten Text enthaltenen Beispiel zu den nicht sichtbaren Zeichen etwa nicht sinnvoll? Zumindest, wenn man HTML zu Fuß schreibt, sehe ich das durchaus als probates Mittel an, so dass man als Bearbeitender im Quelltext sofort sieht, was Sache ist. Bei Code, der generiert wird, kann man ja die Escape-Sequenz des jeweiligen Systems nehmen. Dann landet in der maschinengelesenen Ausgabe das richtige Zeichen. Vielleicht so:
echo htmlspecialchars(implode("\xC2\xA0", $einArray));
Ist in PHP etwas doof, weil das noch keine Unicode-Codepoints umsetzen kann, so dass man hier die UTF-8-Form nehmen muss, will man nicht noch einen Funktionsaufruf reinschachteln.
echo htmlspecialchars(implode(utf8_encode("\xA0"), $einArray));
In Javascript hingegen kann man ja schön \u00A0 nehmen.
Lo!
@@dedlfix:
nuqneH
Kannst du mal mit einem Beispiel aufwarten, wann es nicht sinnvoll sein sollte, richtige Zeichen anstatt Escapes zu verwenden?
Findest du die in dem von dir übersetzten und verlinkten Text enthaltenen Beispiel zu den nicht sichtbaren Zeichen etwa nicht sinnvoll?
Ich präzisiere: Kannst du mal mit einem Beispiel außer den bereits genannten aufwarten … ;-)
Qapla'
Lieber Gunnar,
(Gemeint ist Fließtext [^&<] in HTML; nicht Kontexte, wo escapet werden
muss.)
in Sachen Fließtext in HTML gebe ich Dir absolut Recht. Es wäre schön doof alle deutschen Sonderzeichen in Entitäten schreiben zu müssen, wenn es das doch in UTF-8 nicht bräuchte.
Da ich JavaScript, CSS und HTML (und auch serverseitigen Code) strikt trenne (oder es zumindest immer versuche), habe ich auch selten eine kontext-bedingte Umwandlung vorzunehmen, es sei denn ich verarbeite user-submitted data (oder DB-Output o.ä.).
Liebe Grüße,
Felix Riesterer.
Moin!
Kannst du mal mit einem Beispiel aufwarten, wann es nicht sinnvoll sein sollte, richtige Zeichen anstatt Escapes zu verwenden?
Mir fällt genau ein Beispiel ein:
Wenn man ein HTML-Fragment an Dritte ausliefert, welches diese in ihr eigenes HTML integrieren müssen, und man diese Dritte von der Notwendigkeit des Umcodierens entlasten will, würde man vermutlich US-ASCII ausliefern (kompatibel zu allen wichtigen Encodings) und alle Sonderzeichen als Entity bzw. NCR verfassen.
Und schon kann man das Fragment ungehindert mit UTF-8, ISO-8859-1, ISO-8859-15, Windows-1252, Shift_JIS, EUC etc. mischen (leider keine Garantie für die asiatischen Multibyte-Zeichensätze von mir, aber ein kurzer Check eröffnete mir, dass alle mit ASCII im Prinzip umgehen können sollten...).
- Sven Rautenberg
@@Sven Rautenberg:
nuqneH
Kannst du mal mit einem Beispiel aufwarten, wann es nicht sinnvoll sein sollte, richtige Zeichen anstatt Escapes zu verwenden?
Mir fällt genau ein Beispiel ein:
Wenn man ein HTML-Fragment an Dritte ausliefert, welches diese in ihr eigenes HTML integrieren müssen
und man diese Dritte von der Notwendigkeit des Umcodierens entlasten will, würde man vermutlich US-ASCII ausliefern (kompatibel zu allen wichtigen Encodings) und alle Sonderzeichen als Entity bzw. NCR verfassen.
Eins, setzen. ;-)
Qapla'