Umlaute und UTF8, ich verzweifel so langsam

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

  • Umlaute und UTF8, ich verzweifel so langsam

    Hallo Leute,

    ich verzweifel so langsam an MySQL und PHP.....

    Ich habe jetzt 3 Seiten erstellt in PHP und jedes mal das gleiche und doch jedes mal anders (sonst würde ich ja die Lösungen der vorgänger benutzen...)


    Also:
    Ich habe eine MySQL 5.0.22 DB und 4.x (naja, aktuell eben)

    ich benutze UTF-8 auf meiner Seite da sie universel bleiben soll (vielleicht zusätzlcihe Sprache usw..)

    Mein Problem: deutsche Umlaute werden nicht richtig angezeigt!

    Ich setze ein Header in auf meiner Seite ab:
    header("Content-type: text/html; charset=utf8");

    Ich habe eine entsprechende Meta-Tag:
    <meta http-equiv="content-type" content="text-html; charset=utf-8">

    ich achte darauf das meine Tabellen alle in utf8 angelegt sind und die tabellen-kollation ebenfalls auf UTF8 ist. Was zum Teufel will der noch von mir damit die Umlaute richtig anstatt kriptisch oder als Raute usw.. dargestellt werden soll ?

    phpmyadmin zeigt mir die Datensätze ebenfalls richtig an, da gehe ich mal davon aus das diese auch richtig gespeichert wurden......

    ich habe auch noch folgenden sql-befehl abgesetzt:

    SHOW VARIABLES LIKE '%char%'

    und bekomme folgendes raus:

    character_set_client utf8
    character_set_connection utf8
    character_set_database latin1
    character_set_filesystem binary
    character_set_results utf8
    character_set_server latin1
    character_set_system utf8
    character_sets_dir /usr/share/mysql/charsets/



    Kann es sein das da was falsch läuft ? Ich meine die Tabellen SIND utf8, gebe ich ja beim erstellen an und wird in phpmyadmin auch in der Strukturansicht auch angezeigt...aber wer weis ?

    Kann mir jemand sagen was ich noch tun muss wegen diesen verflixten Umlauten ?

  • #2
    Die Verbindung zur Datenbank muss auch noch eingestellt werden. SET NAMES

    Sind denn nur die Zeichen die aus der Datenbank stammen verkorkst?

    Wenn nicht, dann guck mal nach, in welcher Kodierung die Seite ausgeliefert wird (im Firefox get das mit Rechtsklick->Seiteninformationen anzeigen). Eventuell muss das dem Server nämlich auch noch beigebracht werden.
    ich glaube

    Kommentar


    • #3
      @ministry

      Hallo,

      wenn ich Umlaute fest in der Seite einbinde (also im Script selber) dann werden diese richtig angezeigt.

      Wie gesagt, Header, Meta-Tag und Dateiformat sind alle auf UTF8.

      Hinzu kommt das ich lokal auf meiner Testumgebung auch alles richtig angezeigt bekomme. Nur eben nicht sobald es auf dem richtigen Webserver läuft!

      Ich habe nun per Set character_connection, character_result, usw... alles auf UTF8 gesetzt (weil das genauso auf meiner Testumgebung so eingestellt ist) und bekomme lediglich den character_set_server sowie collation_server nicht weg von latin1...

      Hat jemand einen Tip für mich wie ich das umstellen kann auf utf8 ?
      Jedenfalls wird es immer noch falsch angezeigt obwohl ich ja nun bis auf das genannte alles auf UTF8 umgestellt habe ?

      Wäre wirklich dankbar für jegichen nützlichen Tip.....

      Kommentar


      • #4
        Ich habe nun eine Lösung die mich aber ganz und gar nicht begeistert....

        Bei jedem Verbindungsaufbau vom Server zur DB setze ich nun 2 SQL-Befehle ab und es funktioniert....

        PHP-Code:
        SET NAMES utf8;
        SET CHARACTER_SET utf8
        ABER:
        das kann es ja wohl nicht sein, oder ?
        Bei meiner anderen Seite habe ich tausende kroatische Zeichensätze (uft8 natürlich) und es funktioniert ohne Probleme.....
        Was soll das jetzt mit diesen Umlauten ?

        Kann ich das nicht 'schöner' lösen ?

        Kommentar


        • #5
          SET CHARACTER_SET sollte eigentlich gar nicht gehen laut http://dev.mysql.com/doc/refman/5.1/en/set-option.html
          Es heißt nämlich CHARACTER SET und das wiederum sollte nichts bringen, weil es fast identisch mit SET NAMES ist...
          Generell konnte ich keine Option finden die CHARACTER_SET heißt *zucks*


          Was ich sagen würde ist, dass der DB-Server unter latin1 läuft, was ziemlich dumm ist...
          character_set_server und character_set_database zusätzlich zum SET NAMES auf utf8 stellen sollte helfen, warum das aktuell auf latin1 steht kann dir wohl nur der Hoster beantworten, denn das ist einfach nur sinnlos... die Verbindung zu php ist immer latin1 solange man die lib nicht neukompiliert, man kann den Server also ohne Probleme für andere Kunden auf utf8 laufen lassen

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            @ghostgambler

            Oh, danke für den Hinweis...
            Habe es so im Web gefunden und mitübernommen gehabt.....
            Aber es geht auch ohne das set character_set.....

            Ich habe nun alles in der DB auf utf8 gesetzt was ich konnte...
            character_set_ und collation des Servers kann ich nicht beeinflussen....ist wohl so default bei Strato...

            Bin mit Strato solangsam unzufrieden....
            Default sollte eigentlich auch Safe_Mode = ON sein, was auch bei denen auf der Seite steht....
            bei mir komischerweise nicht......und auf ca. 10 Anfragen diesbezüglich konnte mir keiner weiterhelfen ausser beim letzten der sagte einfach eine PHP.ini (leere) erstellen und da drinnen Safe_Mode = ON abspeichern und der Server würde automatisch darauf greifen....hat natürlich gar nichts gebracht.
            Wäre der Server bei denen nicht so verdammt günstig wäre ich wohl schon lange weg......so ein Saftladen.....

            Jedenfalls danke ich dir für deine Antwort

            Kommentar


            • #7
              Hi,
              ausser beim letzten der sagte einfach eine PHP.ini (leere) erstellen und da drinnen Safe_Mode = ON abspeichern und der Server würde automatisch darauf greifen....hat natürlich gar nichts gebracht.
              Ändert man nicht eigentlich die php.ini (die, die der Server halt einliest)? Und ohne Server-Neustart wird auch eine Änderung nicht wirksam.

              LG

              Kommentar


              • #8
                Original geschrieben von Master0Blicker
                Aber es geht auch ohne das set character_set.....
                Hätte mich auch gewundert...

                Ich habe nun alles in der DB auf utf8 gesetzt was ich konnte...
                character_set_ und collation des Servers kann ich nicht beeinflussen....ist wohl so default bei Strato...
                Natürlich kannst du diese Dinge session-seitig abändern. Genau das tust du ja mit SET NAMES auch.

                Bin mit Strato solangsam unzufrieden....
                Na das wundert mich ehrlich nicht...
                Ich kann all-inkl empfehlen. Deren Support ist zwar dumm (nicht nur zu dumm um vorigen Schriftverkehr (der sich komplett am Ende der Mail befindet) zu lesen, sondern haben offensichtlich von ihrem System weniger Ahnung als ich...), aber relativ schnell und bemüht sind ein Problem zu lösen (auch wenn man meist besser damit bedient ist es einfach selbst zu lösen, was in vielen Fällen auch klappt).
                Ansonsten vserver... wenn das Angebot mit 3 Domains wäre würde ich sofort zu server4you umsteigen, so sind mir die 2 Euro im Monat die ich bei all-inkl spare zuviel um umzusteigen (man nenne mich geizig, aber es funktioniert bei all-inkl mittlerweile alles *zucks*)


                Default sollte eigentlich auch Safe_Mode = ON sein, was auch bei denen auf der Seite steht....
                Hab noch nie jemanden getroffen, der das freiwillig an haben wollte oO;


                @kuddeldaddeldu
                Ja natürlich gibt es nur eine php.ini, was der Herr vielleicht meinte wäre .htaccess, damit kann man auch einige Konfig-Varaiblen von php abändern, allerdings dann nicht mit der vorgeschlagenen Syntax ... keine Ahnung was sich Support-Futzies immer denken oO

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  @kuddeldaddel

                  Der Support meinte tatsächlich das ich eine php.ini in ein root-verzeichnis (das Startverzeichnis einer domain) abspeichern soll. Muss nichts weiter drinn stehen als oben genanntes und es würde automatsich 'greifen'......nun, ich glaubte es zwar auf anhieb nicht aber nach mehrmaligen Versuchen war vollkommend überzeugt das es so nicht geht....

                  Das war das Ergebnis nach mindestens 7 oder 8 Supportanfragen diesbezüglich....

                  Übrigens: bei Strato ist es genauso wie ghostgambler bereits von anderen beschrieben hat: diese lesen den Schriftverkehr überhaupt nicht. Man kann gar nicht auf mails Antworten und muss jedesmal das Kontaktformular auf ein neues bemühen.....habe natürlich den Schriftverkehr hinenkopiert und gelesen wurde es trotzdem nicht......

                  Sowas unkompetentes habe ich noch nie erlebt!

                  Aber immerhin, 40 € / Monat für ein Managed-Server mit 3 Domains und alles sonstige unbegrenzt.....

                  @ghostgambler

                  Geht ja nicht wirklich um diese Sache sondern das diese einfach unfähig sind......
                  Ich brauche Safemode nicht, wäre es was anderes wäre ich aber auch total im Stich gelassen vom Support.....

                  Wäre es mir nicht zu mühselig würde ich umsteigen auf ein anderen Anbieter...der Preis war vor einigen Monaten auch unschlagbar.....
                  Die Preise sind danach schlagartig wieder in die Höhe und mein Angebot gab es nicht mehr....
                  Muss mal wieder vergleichen......

                  Kommentar

                  Lädt...
                  X