Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Utf8

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Utf8

    Hallo zusammen.

    Ich bin gerade dabei ein CMS, mit dem MVC-Pattern zu erstellen. Und wenn ich gerade schon dabei bin, will ich auch gleich Mehrsprachigkeit mit einbauen. Da liegt es ja nahe, dass ich UTF8 Zeichenkodierung verwende.

    Hat damit schonmal jemand was gemacht? Was muss ich bei PHP, was bei MySQL beachten?

    Dieser Thread soll jetzt nicht zur Diskussion über das MVC-Pattern oder Sinn und nutzen eines eigenen CMS anregen, es geht mir nur um die UTF8-Kodierung und wie diese umgesetzt wird.

    Vielen Dank schon mal für eure Antworten.

    Grüße

    Steffen

  • #2
    Zitat von SJahr Beitrag anzeigen
    Hat damit schonmal jemand was gemacht? Was muss ich bei PHP, was bei MySQL beachten?
    Eigentlich nichts Das ist ja das schoene. Naja im Setup schon. Datenbank, Tabellen, Spalten und Verbindung sollten auf UTF-8 gestellt sein.

    Dein Editor muss auf UTF-8 gestellt sein, sofern du die Inhalte auch ueber deine Skripte (und seien es nur die Templates) publizierst. Speicher aber kein BOM in die Dateien.

    In der Ausgabe solltest du den entsprechenden HTTP-Header mitsenden, per php's header() und html's <meta>.

    Wenn du Mehrsprachigkeit moeglich machen moechtest, vorerst jedoch nur eine Sprache unterstuetzt, schau dir gettext() an und render deine Text einfach nur mit echo _("mein Text") anstatt mit echo "mein Text" heraus. gettext() uebernimmt dann die Technik fuer dich. Schaden tut es natuerlich nicht, wenn du dich bei der Ordnerstruktur schon etwas an Mehrsprachigkeit orientierst.
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

    Kommentar


    • #3
      Das mit dem header() und <meta/> wusste ich schon.

      gettext() ist ne gute Idee, aber ich werde eine eigene Lösung implementieren

      Bei MySQL muss ich die Datenbank und die Tabellen als UTF8 deklarieren, ist das richtig? Welche Kodierung nehm ich da? Da gibt es ja viele. Nehm ich utf8_general_ci ? Oder was anderes?

      Beim absetzen eines Query muss ich vorher die Verbindungsart auch noch auf UTF8 setzen oder?

      Kommentar


      • #4
        Zitat von SJahr Beitrag anzeigen
        gettext() ist ne gute Idee, aber ich werde eine eigene Lösung implementieren
        Das bleibt natuerlich dir ueberlassen, ich bereue allerdings, dass ich das letzte mal keine fertige Loesung verwendet habe. Man schraubt dann letztlich doch tage- achwas wochenlang dran rum und bei gettext(), naja da uebersetzt man eigentlich nur

        Bei MySQL muss ich die Datenbank und die Tabellen als UTF8 deklarieren, ist das richtig? Welche Kodierung nehm ich da? Da gibt es ja viele. Nehm ich utf8_general_ci ? Oder was anderes?

        Beim absetzen eines Query muss ich vorher die Verbindungsart auch noch auf UTF8 setzen oder?
        Also die Verbindung musst du vermutlich nicht manuell setzen, wenn beide Enden (PHP <-> MySQL) die selbe Sprache sprechen, muss der Transport nicht uebersetzend taetig werden. Das ist allerdings nur eine Vermutung, trotzdem funktionierts bei mir seit Jahren

        Das "ci" bei "utf8_general_ci" steht fuer case-insensitive, Grosskleinschreibung wird also bei Vergleichen ignoriert. "cs" steht fuer case-sensitive. Was das richtige fuer dich ist musst du wissen.
        "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

        Kommentar


        • #5
          Ich verwende normalerweise auch fertige Lösungen. Aber ich will dieses Mal alles selbst machen, einfach nur mal zum Spaß

          Ich hab mal nach dem Thema gegoogelt (schon vor diesem Post) und bin immer wieder auf diesen Befehl gestoßen

          Code:
          SET NAMES utf8
          Muss ich den als Query absetzen, wenn beide Seiten UTF8 sprechen?

          Kommentar


          • #6
            Probiers doch einfach aus

            Ich setz den Befehl nie, wegen genannter Vermutung oben und bei mir werden alle Zeichen korrekt von und in die DB uebertragen.
            "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

            Kommentar


            • #7
              Noch vergessen wurde CSS:

              Code:
              @charset "utf-8";
              Als erste Zeile.

              Im Detail nicht genannt:
              XHTML-Content-Type
              Code:
              <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
              (x)HTML-Formulare (als Attribut):
              Code:
              accept-charset="utf-8"
              XML
              Code:
              <?xml version="1.0" encoding="utf-8" ?>
              Server:
              php.ini
              Code:
              default_charset = "utf-8"
              httpd.conf
              Code:
              AddCharset utf-8 .css .html .xhtml
              my.ini sollte auch umgestellt werden, alternativ kann man das von dir selbst genannte SET NAMES verwenden.

              Darauf achten sollte man auch beim EMail versenden.


              Werden diese Angaben nicht durchgehend gemacht, kann es in gewissen detailbereichen zu problemen kommen. Dies zum Beispiel (extrem), wenn ein Chinese eure Formulare ausfüllt

              Kommentar


              • #8
                Auf dem Server müssen die Inis verändert werden? Das könnte zu Problemen führen, da muss ich mal nachfragen.

                Kommentar


                • #9
                  Musst du nicht zwingend, ist einfach am schönsten. Es reicht aber auch eine ini-set Anweisung. Anstelle der httpd.conf kannst du dies auch mit einer .htaccess-Datei machen.

                  Kommentar


                  • #10
                    Danke. Damit wär dann auch das Thema erledigt

                    Kommentar


                    • #11
                      Die Konfigurationsdateien brauchst du nicht zwingend aendern, die dienen ja nur als Fallback.
                      "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

                      Kommentar


                      • #12
                        Dazu kannst Du Dir auch noch MySQL :: MySQL 5.1 Reference Manual :: 9.1.4 Connection Character Sets and Collations durchlesen.

                        Kommentar

                        Lädt...
                        X