kölir: iso-8859-1 zu utf-8

Hallöle,

erstmal ne andre Frag vorneweg: Ist es sinnvoll auf utf-8 umzusteigen, bei einer nicht-internatinalen Seite?

So also ich habe überlegt von iso-8859-1 auf utf-8 umzusteigen, da mir utf-8 manchmal sinnvoller erscheint...z.B. weil meine Datenbank auch utf-8 verwendet
Nun meine Frage, für die HTML-Codes müsste es ja gehen, wenn ich einfach im title den Zeichensatz ändere und die Datei speichere oder?
Aber was ist mit php-skripten und vorallem myslq-Datenbanken, bei der Datenbank konnte ich ja gar kein iso einstellen also muss ich wohl auch nicht auf utf-8 umstellen...!!!

dankeschönamale

soso frosthauch

  1. Tach,

    Nun meine Frage, für die HTML-Codes müsste es ja gehen, wenn ich einfach im title den Zeichensatz ändere und die Datei speichere oder?

    wichtig ist, dass die Dokumente auch wirklich UTF-8 sind, wenn du sie so auslieferst, außerdem ist nicht die Angabe im Head der HTML-Datei wichtig, sondern die vom Server übermittelte Angabe.

    mfg
    Woodfighter

    1. dangge

      aber für was gebe ich dann den datensatz an im head der html-datei??

      ist es überhaupt sinnvoll? kenn mich mit datensätzen net gut aus, aber wenn ich im www grad so bissle stöber, weiß ich net ob ich umstellen soll...

      1. Tach,

        aber für was gebe ich dann den datensatz an im head der html-datei??

        der wird z.B. verwendet, wenn kein HTTP-Umfeld vorhanden ist, also ich z.B. die Datei auf meiner Festplatte abspeichere.

        ist es überhaupt sinnvoll?

        Ich halte UTF-8 für sinnvoller als die ISO-Kodierungen, weil man keine Weiterverarbeitungsprobleme mit dem Zeichensatz hat, sofern halt immer die gesamte Kette UTF-8-kompatibel ist.

        mfg
        Woodfighter

        1. danke

          wie ist das, wenn ih daten in mysql-datenbank schrieb (fiel mir grad so erschrocken ein) dann muss ich die doch umwandeln in utf-8 und wenn ich sie wieder aus der Datenbank hohle um sie auszugeben muss ich sie wohl wieder in iso bringen oder?

          leider scheint das ziemlicher stress zu sein, alles in utf-8 zu machen :-( außerdem sendet mein server anscheinend iso...bei gemietetem webspace ist umstellen wohl nicht drin und somit hätte sich das erledigt...

          an was für verarbeitungsprobleme denkst du?

          1. hi,

            außerdem sendet mein server anscheinend iso...bei gemietetem webspace ist umstellen wohl nicht drin und somit hätte sich das erledigt...

            Doch, das sollte idR. möglich sein.

            Die Konfiguration eines Apachen kannst du per .htaccess-Datei auf Verzeichnisebene konfigurieren - je nachdem, was du umstellen willst, muss dir AllowOverride verschidenes erlauben. Schau ins Handbuch, und frage ggf. deinen Hoster.

            Und in PHP kannst du die Charset-Angabe natürlich auch überschreiben - sowohl den Defaultwert in der Konfiguration (php.ini/.htaccess), als auch per header() im Scriptablauf.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. hi,

              danke...mal sehn

              Ist es denn sonnvoll auf utf-8 umzustellen, was ist eure Meinung?

              Und wegen utf-8 in Bezug auf mysql: Hatte Daten, die indie Datenbank kamen nie irgendwie kodiert, der Zeichensatz der Datenbank war aber utf-8 undd er meiner Skripte und Pages iso-8859-1? Habe ich da was falsch gemacht? Möchte das wissen wegen der Umstellung, auf utf-8, muss ich dann eventuell die Daten umwandeln bevor sie in die Datenbank kommen oder von der Datenbank ausgegeben werden?

              Danke

              1. hi,

                Ist es denn sonnvoll auf utf-8 umzustellen, was ist eure Meinung?

                Ja, auf jeden Fall.
                Es muss ja nicht immer um chinesische oder osteuropäische Sonderzeichen gehen - schon das €-Zeichen bildet ISO-8859-1 nicht ab, da bräuchte es schon ISO-8859-15. Und auch die „deutschen Anführungszeichen” sind in -1 nicht enthalten (für -15 weiß ich's gerade nicht).

                Jedenfalls kommen "Sonderzeichen", die die diversen Latin-1-Ausprägungen nicht abdecken, auch bei "normalen" Inhalten durchaus häufiger vor.

                Und wegen utf-8 in Bezug auf mysql: Hatte Daten, die indie Datenbank kamen nie irgendwie kodiert, der Zeichensatz der Datenbank war aber utf-8 undd er meiner Skripte und Pages iso-8859-1? Habe ich da was falsch gemacht?

                Da spielen noch andere Faktoren rein, bspw. auch die Kodierung der Verbindung zwischen PHP und MySQL. Wenn die nicht passt, wird ggf. auf dieser Strecke umkodiert, in beiden Richtungen.

                Möchte das wissen wegen der Umstellung, auf utf-8, muss ich dann eventuell die Daten umwandeln bevor sie in die Datenbank kommen oder von der Datenbank ausgegeben werden?

                Probier's aus - dupliziere dir die in Frage kommenden Tabellen, und spiele mit ihren Klonen herum, bevor du irgendwas definitiv zerschießt. Oder mache alternativ ein Backup.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. hi,

                  also dann mal langsam aber sicher umstellen...

                  ABER muss ich jede Datei einzeln öffnen und in utf-8 umspeichrn oder kann ich das auch anders? automatisch oder so...
                  ich mein bei vielen Daten würde das öffnen und umspeichern ja ewig dauern...

                  gruß

                  1. Tach,

                    ABER muss ich jede Datei einzeln öffnen und in utf-8 umspeichrn oder kann ich das auch anders? automatisch oder so...
                    ich mein bei vielen Daten würde das öffnen und umspeichern ja ewig dauern...

                    ich habe mal von Systemen gehört, die erfunden wurden um sich wiederholende Aufgaben, die im Zusammenhang mit Daten stehen, sehr schnell und effizient zu berbeiten; leider werden diese heutzutage fast ausschließlich eingesetzt um weltweit Pornographie zu verteilen und Pixel zu töten ;-)

                    Man könnte zum Beispiel iconv nutzen.

                    mfg
                    Woodfighter

                  2. n'abend,

                    ABER muss ich jede Datei einzeln öffnen und in utf-8 umspeichrn oder kann ich das auch anders? automatisch oder so...
                    ich mein bei vielen Daten würde das öffnen und umspeichern ja ewig dauern...

                    du kannst natürlich ein Script schreiben, welches deine Dateien eine nach der anderen nach UTF-8 konvertiert. Funktionen zum rekursiven Durchlaufen der Verzeichnisse bieten die User-Contributed-Notes im Manual. für die Konvertierung gibts mehrere Möglichkeiten; je nachdem, welche Module dir zur Verfügung stehen... (utf8_encode(), recode, iconv, [...])

                    weiterhin schönen abend...

                    --
                    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
                    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
                2. Hallo wahsaga.

                  Es muss ja nicht immer um chinesische oder osteuropäische Sonderzeichen gehen - schon das €-Zeichen bildet ISO-8859-1 nicht ab, da bräuchte es schon ISO-8859-15. Und auch die „deutschen Anführungszeichen” sind in -1 nicht enthalten (für -15 weiß ich's gerade nicht).

                  Du meinst die „deutschen Anführungszeichen“.

                  Einen schönen Montag noch.

                  Gruß, Mathias

                  --
                  sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                  debian/rules
  2. n'abend,

    Nun meine Frage, für die HTML-Codes müsste es ja gehen, wenn ich einfach im title den Zeichensatz ändere und die Datei speichere oder?

    nein. Im title änderst du da sowieso nichts. Wenn dann wäre das im <head> und genauer im <meta>.

    Aber was ist mit php-skripten und vorallem myslq-Datenbanken, bei der Datenbank konnte ich ja gar kein iso einstellen also muss ich wohl auch nicht auf utf-8 umstellen...!!!

    Wir beschäftigen uns gerade mit dem selben Problem. Dinge die ich bislang zusammengetragen (und an den Kopf geworfen bekommen habe):

    (a) der Webserver (meist wohl Apache) muss den richtigen Content-Type Header schicken
    (b) die (Text-)Dateien müssen tatsächlich nach UTF-8 konvertiert werden; das bloße Ändern des Content-Type Meta-Tags hilft da nichts. Allerdings sollte (bzw. muss) der Content-Type Meta-Tag zuzüglich zur Konvertierung der Text-Dateien umgestellt werden.
    (c) der PHP-Interpreter muss wissen, dass ihm UTF-8 kodierte Scripts vor den Latz geknallt werden
    (d) der MySQL client muss wissen, dass er UTF-8 liefern darf und nicht vorher nach latin-{x} konvertieren braucht. Selbiges gilt beim Schreiben in die Datenbank
    (e) Benutzereingaben wollen in UTF-8 daherkommen. Formulare also entsprechend anpassen <form accept-encoding="UTF-8">

    [...] RFC

    weiterhin schönen abend...

    --
    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    1. Hey,

      vielen Dank, für die Hilfe...scheienn die Dinge bislang auszureichen?
      Oder gibt's noch mehr Probleme?

      (a) Wie und wo geht/ging das? Mei Hoster antwortet gerade nicht...
          Wäre wohl besser, wenn ich das erst umstelle, wenn ich alle Pages, Skripts, usw schon umgestellt hab. Das muss wohl alles auf einen schlag erfolgen, sonst sendet er utf-8 header ja auch für die noch iso-dateien.

      (b)Hast du die alle von Hand umgespeichert? Oder geht das irgendwie auch automatisch? Der Meta-Tag hat ja dann eigentlcih keinen Wert...

      (c) siehe (a)

      (d)Wie wo was? Kenne mich da nicht so aus, hab mir darüber bisjetzt bei mysql noch kein Kopf gemacht, habe mich nur gewundtert, dass mysql standardmäßig utf-8 hat und meine Site iso und das keine Probleme gab...

      (e)...mmhhh...

      1. P.S.: gibt es browser, die utf-8 nicht unterstützen, muss ich eventuell noch einen 2. möglichen zeichensatz angeben...wie müsste ich den dann verarbeiten?

        1. hi,

          gibt es browser, die utf-8 nicht unterstützen,

          Gab's sicher mal, dürften aber in der Praxis keinerlei Relevanz mehr besitzen.

          muss ich eventuell noch einen 2. möglichen zeichensatz angeben...

          Du müsstest ihn nicht nur angeben, sondern die Daten dann auch in diese Kodierung umkodieren.
          Und da du ja extra UTF-8 gewählt hast, um möglichst viele verschiedene Zeichen darstellen zu können, würden bei Umkodierung in eine "schmalere" Zeichenkodierung natürlich Zeichen auf der Strecke bleiben.

          Nein, verfolge diesen Gedankengang nicht weiter, es gibt so schon genug, womit du dich zum Thema noch wirst beschäftigen müssen. An irrelevante Uralt-Browser brauchst du jetzt wirklich keine Gedanken verschwenden.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. also jetzt ja oder nein?

            1. hi,

              also jetzt ja oder nein?

              In Bezug auf welche Frage?

              gibt es browser, die utf-8 nicht unterstützen,

              Dazu schrieb ich was, auch wenn es kein Ja oder Nein war.

              muss ich eventuell noch einen 2. möglichen zeichensatz angeben...

              Dazu schrieb ich was, auch wenn es kein Ja oder Nein war.

              wie müsste ich den dann verarbeiten?

              Willst du auf diese Frage jetzt ein Ja oder ein Nein lesen?

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
              1. sry aber ich bin glaube ich mit deiner ironie durcheinander gekommen, oder es war doich ironie gemeint...?

    2. echo $begrüßung;

      (c) der PHP-Interpreter muss wissen, dass ihm UTF-8 kodierte Scripts vor den Latz geknallt werden

      PHP hat erst ab Version 6 eine (hoffentlich) ordentliche Multibyte-Zeichensatz-Unterstützung. Momentan gilt 1 Zeichen = 1 Byte. strlen('Ärger') liefert 6, wenn das Ä UTF-8-kodiert ist (= 2 Bytes verwendet). Wenn die Daten nur durchgereicht werden, also keine Stringfunktionen angewendet werden, dann gibt es keine Probleme.

      Ansonsten gibt es noch die Multibyte String Functions-Erweiterung (da muss der Provider mitspielen) und eine Aufstellung der UTF-8-Kompatibilität der einzelnen Funktionen: http://wiki.silverorange.com/UTF-8_Notes.

      (d) der MySQL client muss wissen, dass er UTF-8 liefern darf und nicht vorher nach latin-{x} konvertieren braucht. Selbiges gilt beim Schreiben in die Datenbank

      Solange man nicht sehr sicher sagen kann, welche Kodierung auf der Verbindung zwischen Client und Server verwendet wird - und da würde ich mich beim Hoster nicht blind drauf verlassen - sollte man nach jedem Verbindungsaufbau die Kodierung, die man zu verwenden gedenkt, explizit festlegen: SET NAMES ...

      Der Kenntnis des restlichen Kapitels Character Set Support halte ich ebenfalls für nicht ganz unwichtig. Es gibt recht viele Stellen, an denen Zeichenkodierungsinformationen unter MySQL (>= 4.1) eingestellt werden können oder zu beachten sind.

      echo "$verabschiedung $name";

      1. soso...mmmhhh...^^

        jetzt bin ich leider nochmehr verwirrt.

        Also gut bei mysql den Zecihensatz nach jeder Verbindung angeben. is mir klar.

        An welche anderen stellen denkst du?
        Wenn ich mysql Zeichensatz nach jeder Verbindung festlege was soll dann noch sein?

        Das mit dem php-interpreter verstehe ich nicht. Ich muss ihm doch sagen, dass die Skripte in utf-8 kosiert sind, oder?
        Und wenn ich dann ausgaben mit php mache müsste ich die auch irgendwie utf-8 kodieren, oder? wenn ja wie

        1. echo $begrüßung;

          An welche anderen stellen denkst du?
          Wenn ich mysql Zeichensatz nach jeder Verbindung festlege was soll dann noch sein?

          Es gibt, wie schon erwähnt, viele Stellen, an denen die Zeichenkodierung eingestellt werden kann. MySQL versucht bei unterschiedlichen Kodierungen in die jeweils andere umzukodieren. Beispielsweise ist ein Feld einer Tabelle auf Kodierung A eingestellt, und auf der Client-Verbindung wird Kodierung B verwendet. MySQL versucht nun, beim Speichern von Kodierung B nach Kodierung A umzuwandeln. Beim Auslesen entsprechend von Kodierung A nach B. Dabei kann es zu Datenverlust kommen, da nicht alle Zeichen in der jeweils anderen Kodierung darstellbar sein können. Die Felder eine Tabelle können auch unterschiedlich eingestellt sein. Ein Feld latin1, das andere utf8, ein drittes ucs, etc... Kommt nun auf der Verbindung ein ordentlich utf-8-kodiertes €, wird das im latin1-Feld nur ein ? erzeugen und in den anderen beiden Feldern richtig gespeichert werden.

          Das mit dem php-interpreter verstehe ich nicht. Ich muss ihm doch sagen, dass die Skripte in utf-8 kosiert sind, oder?

          Nein, das muss er nicht wissen, und das kann man ihm auch nirgends einstellen (ich wüsste nicht wo). Es müssen nur die Syntax-Regeln erfüllt sein. PHP verwendet für alle Syntax-Elemente und Bezeichner mitgelieferter Funktionen, Konstanten und Variablen nur Zeichen, die unter UTF-8, ASCII und ISO 8859-x die gleichen Bytewerte haben. Benutzerdefinierte Bezeichner dürfen auch aus Bytes oberhalb von 7E bestehen. Ob ein ä mit einem Byte (E4) oder mit zwei Bytes (C3 A4) kodiert ist, ist dem PHP egal. Nur muss das dann für den selben Bezeichner konsequent in allen für den Request benötigten Dateien gleich kodiert sein. Einmal so und einmal anders kodiert sind zwei verschiedene Bezeichner.

          Und wenn ich dann ausgaben mit php mache müsste ich die auch irgendwie utf-8 kodieren, oder? wenn ja wie

          Du musst die Ausgaben so kodieren, wie du das dem Ausgabemedium gegenüber angegeben hast, bzw. so wie es dies fordert.

          echo "$verabschiedung $name";