Chinesische Schrift makes me crazy

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

  • Chinesische Schrift makes me crazy

    Hallo Leute,

    Ich bin gerade an einer mehrsprachigen Website mit Xamp , mySQL, phpmyadmin am basteln.

    MEin Problem:
    Die datenbank besitzt mehrere Felder mit den jeweiligen Texten/Fragen in den jeweiligen Sprachen. Darunter auch chinesisch.
    Nun die Datenbank stellt mit UTF-8 oder GB2312 die Zeichensätze richtig dar. Auch der Browser kann chinesische Zeichen korrekt ausspucken, auch die ostasiatischen Schriften sind korrekt auf meinem Rechner installiert. Trotzdem spuckt mein Browser nur ???????? aus.

    Dieses Problem habe ich schon öfters im Netz gefunden, doch keine akkurate Lösung dafür.
    Habs schon mit htmlentities und htmlspecialchars versucht, kein Erfolg

    Ich nehme an PHP liest die Datensätze aus der Datenbank aus, interpretiert sie aber falsch, als ??????. In der Datenbank stehen sie eindeutig korrekt als UTF-8 oder GB2312.....
    Code:
    PHP-Code:
    //funktion liest aus der DB die Texte aus
    function get_data($query)
    {
        
    $sql mysql_query($query);
        
    $i =0;
        
    $q = array();
        while(
    mysql_fetch_array($sql) !==false)
        {
            
    $q[$i] = mysql_result($sql,$i);    
            echo 
    "$q[$i]<br>";
            
    $i++;
        }
        return 
    $q;
    }

    $query SELECT FROM demo_china;
    $result_array get_data($query); 
    echo 
    $result_array[0]; //->????????? 
    Danke für eure Anregungen im voraus,

    Benjamin
    Zuletzt geändert von bentheman80; 29.03.2006, 12:23.

  • #2
    und deine charset-definition in der php-datei?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Bitte lesen. Danke.
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        Mein charstet ist:

        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        ...

        habs auch schon gb2312 probiert, hat auch nix gebracht.
        lg
        ben

        Kommentar


        • #5
          Schön, das ist die Charset-Angabe in deinem HTML-Dokument.

          Und mit welcher liefert der Server die Ressource aus?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Was meist du genau? muss ich PHP sagen welche sprache wir gerade einlesen?
            wenn ja, vielleicht liegt das der Knackpunkt!
            lg
            ben

            Kommentar


            • #7
              Original geschrieben von bentheman80
              Was meist du genau?
              Ich meine damit das, was bei ähnlichen Themen schon x-mal erwähnt wurde ...


              Die Angabe zur Zeichenkodierung, die der Webserver beim Ausliefern eines Dokumentes in den Response Headern mitsendet, hat Vorrang vor einer im HTML-Code gemachten.

              muss ich PHP sagen welche sprache wir gerade einlesen?
              Entweder das (Stichwort: header()) - oder gleich den Webserver entsprechend konfigurieren.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Danke, werds mal versuchen.

                wie man den webserver konfiguriert davon hab ich keine Ahnung. Header hab ich bis jetzt zum sprung auf die nächste seite verwendet
                header("LOCATION: net_site.php");

                lg
                Ben

                Kommentar


                • #9
                  Re: Chinesische Schrift makes me crazy

                  Werden denn Sonderzeichen aus anderen Zeichensätzen (arabisch, kyrillisch, etc) korrekt dargestellt? Sollte bei UTF-8 ja der Fall sein.

                  Original geschrieben von bentheman80
                  Nun die Datenbank stellt mit UTF-8 oder GB2312 die Zeichensätze richtig dar.
                  Was heißt das? Eine Datenbank stellt normalerweise überhaupt nichts dar. Zeigt phpMyAdmin die Zeichen korrekt an? Wenn ja könnte irgendwas faul sein, denn bei mir zeigt phpMyAdmin die Multibyte-Zeichen immer als 2 Zeichen an wobei sie in meinen Scripten korrekt angezeigt werden.
                  Wie kommen die Texte überhaupt in die Datenbank? Wenn ich sie im phpMyAdmin eingebe, erscheinen sie später auf meinen Seiten auch als ?. Wenn ich sie aber über ein Formular eingebe, das sich auf einer UTF-8 encodierten Seite befindet, dann werden sie auf der Seite korrekt ausgegeben aber in phpMyAdmin wieder falsch.

                  P.S.:
                  PHP-Code:
                  header('Content-Type: text/html; charset=UTF-8'); 
                  hopka.net!

                  Kommentar


                  • #10
                    Nun, die Daten werden in die Datenbank per copy paste reingehauen. Diese werden dann von phpmyadmin korrekt in Gb2312 oder UTF-8 angezeigt.
                    Danach versuche ich diese Zeichensätze per php skript auszulesen und erhalte als html-text nur ???

                    Kommentar


                    • #11
                      hi
                      bei mir auf der website werden auch ostasiatische Schriftzeichen dargestellt - wobei ich sagen muss, dass die natürlich auf meinem rechner schon installiert sind, aber die in die Datenbank als Sonderzeichen eingefügt wurden...wie z.B. "&_#20303;"(ohne _) das Zeichen für zhù ... und ich als HTML HEADER den "standart" charset <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> gesetzt habe.

                      Auch die Datenbank wurde - wie vor kurzem hier im sql-forum besprochen - auf von utf8 auf latin1 umgestellt ... probiers mal auf die weise...

                      DB charset auf latin1 und auch sonst die normalen charsets zurücksetzen...

                      cya CrazyPip

                      Kommentar


                      • #12
                        @CrazyPip: Suboptimaler Vorschlag.
                        Wozu alle Sonderzeichen als Entities notieren (noch dazu, wenn sie zahlreich auftauchen) - das ist doch unperformanter Unfug.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          warum?
                          gib bitte ein Beispiel dafür?

                          naja ich mein....das Problem was ich mit sql hatte siehe Hier
                          konnte/musste(?) ich dadurch lösen...zumal auch in meiner DB sowohl lateinische(hauptsächlich) als auch chinesische schriftzeichen eingetragen werden.

                          Und man muss aber auch dazu sagen, dass auf meiner Seite sowohl lateinische Buchstaben als auch chinesische Schriftzeichen angezeigt werden...wenn nur ostasiatische Zeichen angezeigt werden sollen, dann ist es natürlich klar, dass man auch die entsprechenden charsets setzt - aber welchen charset sollte man setzen wenn man sowohl lateinische als auch asiatische zeichen anzeigen lässt? da ist meine lösung doch nicht wirklich so schlecht...meine ich jetzt mal...oder?

                          cya CrazyPip

                          Kommentar


                          • #14
                            Original geschrieben von CrazyPip
                            aber welchen charset sollte man setzen wenn man sowohl lateinische als auch asiatische zeichen anzeigen lässt?
                            UTF-8 beispielsweise - wie hier auch schon passiert (nur eben noch nicht komplett richtig bzw. in voller Konsequenz).
                            da ist meine lösung doch nicht wirklich so schlecht...meine ich jetzt mal...oder?
                            Doch, ist sie.

                            Warum sollte man Zeichen durch eine Entity-Schreibweise darstellen - die idR. aus um die vier, fünf oder mehr ASCII-Zeichen besteht - wenn man es doch auch (in UTF-8) durch maximal 2 Bytes darstellen kann?

                            Wie gesagt, wenn ab und zu mal ein solches Sonderzeichen vorkommt, mag die Entity-Notation noch OK sein - aber wenn, wie bei deinem konstruierten Beispiel, die Hälfte des Textes aus solchen Sonderzeichen besteht, ist das unperformant und überflüssig.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              ok sehr plausibel

                              was ist mit der datenbank? sollte die ebenfalls auf utf8 gestellt werden - auch wenn man ascii zeichen eintragen möchte?

                              OffTopic:
                              um danach wieder auf das Thema von bentheman80 zurückzukommen

                              Kommentar

                              Lädt...
                              X