Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Utf8

Einklappen

Neue Werbung 2019

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

  • SJahr
    hat ein Thema erstellt [Erledigt] Utf8.

    [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

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

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    Die Konfigurationsdateien brauchst du nicht zwingend aendern, die dienen ja nur als Fallback.

    Einen Kommentar schreiben:


  • SJahr
    antwortet
    Danke. Damit wär dann auch das Thema erledigt

    Einen Kommentar schreiben:


  • bieler
    antwortet
    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.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • bieler
    antwortet
    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

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    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.

    Einen Kommentar schreiben:


  • SJahr
    antwortet
    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?

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    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.

    Einen Kommentar schreiben:


  • SJahr
    antwortet
    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?

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X