Codierung mit unicode?

hallo,

nun, ich hab da mal was programmieren wollen, aber das geht nicht wirklich, da die Codierung (unicode) weder vom php-parser, noch vom Browser (ff) unterstützt wird…

nun, wenn ich es mit ANSII (oder wie das auch immer heisst…) speichern möchte (was ich als erstes probiert habe) kommt irgendwie sone meldung, die mir klar machen will, dass in meinem code unicode schnippsel vorhanden sind… ja das sind sie, sogar absichtlich …die verlorengehen würden, wenn man die datei mit ANSII abspeichert…

deshalb meine Frage:
gibt es überhaupt ne codierung, die unicode normal abspeichert, und sowol vom php-parser als auch von den browsern unterstützt wird??

wäre das mit UTF-8 möglich?

mal sehen…

ich freue mich auf eure antworten :smiley: :smiley:

mfg Joey

Nun, sobald du Zeichenketten in ANSI/ASCII abspeichern kannst,
kannst du auch die Nummer jeglichen Zeichens abspeichern,
welches in unicode definiert wurde - kannst es auch in
allen XMLs ausgeben und auch in HTML, dort sind das dann
solche Gebilde: ß
Von der Idee her ordnet unicode erstmal nur jedem Zeichen
eine Nummer zu, was dann damit angestellt wird, ist nochmal
ein anderes Problem.

Interpretiert wird das wohl mittlerweile von jedem halbwegs
aktuellen browser. Ein ganz anderes Problem ist dabei, ob in
der verfügbaren Schriftart für solch ein Zeichen auch ein
graphisches Symbol vorhanden ist, ob der Glyph also selbst
darstellbar ist oder nur das Symbol für einen fehlenden
Glyphen verwendet wird, der in jeder Schrftart vorhanden sein
sollte.

ISO 8859-1, UTF-8 oder UTF-16 setzen Teilbereiche des unicodes
um, jeweils mit eigener Kodierung. Bei UTF-16 beziehungsweise
UTF-8 passen die Zahlenkombinationen für die Zeichen, sofern
vorhanden, ISO-Kodierungen sind hingegen wohl älter als unicode
und vom System her paßt da zwangsläufig nie alles zusammen,
wenn was anderes als ISO 8859-1 verwendet wird.

Wenn man nur die Zeichen braucht, die UTF-8 abdeckt, sollte
das auch funktionieren. Bei PHP sollte man noch mal genau in
der Dokumentation gucken, wie die sich das vorstellen.

Man erfährt da etwa, daß eigentlich nur die üblichen 256
Zeichen verfügbar sind:
php.net/manual/de/language.types.string.php

Es gibt aber offenbar Funktionen, mit denen man Zeichenketten
in UTF-8 erzeugen kann:
php.net/manual/de/function.utf8-encode.php

Wie es andersherum funktionieren soll, wenn wirklich der
komplette Umfang von UTF-8 benutzt wird, wird allerdings nicht
erklärt:
php.net/manual/de/function.utf8-decode.php

Sollte man mal mit einem exotischeren UTF-8-Text probieren,
der Zeichen aus den verschiedensten Sprachen der Welt
enthält - bestimmt interessant, was dabei herauskommt ;o)

Allerdings muß das PHP selbst nicht zwangsläufig verstehen, was
es verarbeitet, wichtiger ist dann, daß man dem browser korrekt
kundtut, was es wirklich ist, damit dieser das geeignet darstellen
kann ;o) Dazu muß der header eines ausgegebenen Dokumentes
dann jeweils die passenden Kodierungsangaben enthalten.

Details werden ja auch immer wieder gern bei wikipedia
kundgetan:
de.wikipedia.org/wiki/Unicode

cool, so ne lange Antwort hab ich schon lange nicht mehr gesehen, Danke! :p

auf jeden fall weiss ich jetzt ein bisschen mehr.

[size=85]aber ich glaub, das mit dem Verstehen beim php-parser hast du nicht ganz verstangen, ich meinte dass er das überhaupt auch liest…[/size]

ich werd mal sehen…

mfg Joey

Nun für den PHP-parser gibt es doch eigentlich zwei bis drei
Arten von Text.

  1. Text, welcher das eigentliche Skript darstellt, also die
    Funktionen, Variablen etc. Da ist der Zeichenbereich wohl
    sowieso auf die üblichen normalen Zeichen beschränkt, die
    ohnehin gleich kodiert sind, insofern also kein Problem.
  2. Text in Zeichenketten, die ohne Interpretation ausgegeben
    werden sollen - muß sich der parser gar nicht drum kümmern,
    was das ist, muß es eben nur ausliefern.
  3. Zeichenketten, die interpretiert werden sollen - also wo
    Variablen drinstehen können, die durch deren Werte ersetzt
    werden sollen. Auch da muß der parser nicht allzuviel verstehen,
    muß eben nur die Variablen finden und ersetzen, was zum
    Beispiel darauf hinausläuft, ein $ zu finden und drauf folgende
    Zeichen als Variablennamen zu interpretieren, das gehört aber
    vom Zeichenumfang wieder zu Typ 1.

Probleme treten immer dann auf, wenn ‘insgeheim’ irgendwo
eine Konvertierung von Zeichen stattfindet oder eine
Zeichennummer vorliegt, die im Verarbeitungsmodus oder
gegebenenfalls in der Datenbank (was dann eher MySQL ist)
im erlaubten Zeichenumfang nicht erlaubt ist. Das sind aber
fast immer Probleme, wo der Autor des Skriptes durch sein
eigenes Konzept nicht mehr durchblickt, weswegen es dann zu
diesen Problemen kommt, hat nicht direkt was mit dem
php-parser zu tun.

hmm… naja, danke

aber dann glaub ich, hab ich grad so ein problem…

<?php function pla2 ($txt, $cod, $act) { $arr1 = array( 1 => '&', 2 => '<', 3 => '>', 4 => '\', 5 => '/', 6 => '(',
ich glaub ich hab den durchblick zwar nicht verloren…
aber irgendwie… :ps:

hoffe ihr seid/du bist nicht so [i]blöd/i wie ich…^^

mfg Joey

Mal abgesehen davon, daß der Quelltext offenbar
unvollständig ist, liegt das konkrete Problem mit der
Fehlermeldung bei Nummer 4, dort schreibst du besser
"4 => ‘\’,", denn ein einfaches \ sorgt für eine Maskierung des
folgenden Zeichens, zwei \ sorgen dafür, daß \ selbst maskiert
wird …

der code liegt mir vollständig vor, aber ich wollte euch nicht mit 480 zeilen (besser gesagt das forum) vollstopfen

naja, eigentlich weiss ich ja, dass ein \ maskiert, aber daran denke ich halt nicht immer

vielen dank :p

ich glaub, dann wäre der eigentliche Sinn dieses Threads erledigt…

mfg Joey