Ankündigung

Einklappen
Keine Ankündigung bisher.

sprachproblem (chinesisch)

Einklappen

Neue Werbung 2019

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

  • sprachproblem (chinesisch)

    Hallo Forum,

    ich habe folgendes Problem, vielleicht könnt Ihr mir weiterhelfen.
    Ich habe ein Datenbankfeld vom Typ: varbinary(250)
    In dieses speicher ich chinesische Schriftzeichen (über phpMyAdmin) damit ich später aus diesem mittels php und fpdf eine PDF-Datei generieren kann. Das klappt auch gut, nun will ich dieses Feld über ein simples Formular auslesen und befüllen - und da fehlt mir wohl einfach das know how um meinen Fehler zu finden.

    Wie gesagt, einfache Anfrage (die wie ich hoffe relevanten Teile):

    PHP-Code:
     
    ...
    //php teil
     $result = mysql_query("SELECT * FROM test");
     $row = mysql_fetch_array($result, MYSQL_BOTH);
     $temp=$row["china"];
    ...
     
     
    // html teil
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" dir="ltr">
    <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     </head>
    ...
    <input name="textfield" type="text" value="<?php echo $temp?>">
    ...
    Statt meiner chinesischen Schriftzeichen bekomme ich irgend etwas undefinierbares angezeigt (土).

    Ich weiß nicht, ob ich schon bei der MySQL-Anfrage etwas ändern muss, ob ich die $temp Variable convertieren muss, oder ob bei der Ausgabe der Fehler liegt.
    Den Header der HTML-Datei habe ich mir einfach mal aus dem phpMyAdmin übernommen (Quelltext anzeigen), da dieses Progemm das ja wunderbar geregelt bekommt (und ja auch nur mit wasser, bzw. php kocht).

    Vielen Dank schon mal für Euer Interesse und hoffentlich bis später

    Gruß Stefan

  • #2
    Ich nehme an, dass deine MySql-Tabelle auf UTF8 steht. In diesem fall musst du im Script gleich nach dem Verbinden zur DB

    mysql_query("SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'") or die(mysql_error());

    oder entsprechendes ausführen.

    Kommentar


    • #3
      Lösung

      Hallo und danke für die Antwort.

      Wie es meist so ist, habe ich die Lösung per Zufall gefunden (auch wenn ich noch verstehen muss warum das so ist .

      Ich habe meine PHP Datei mit Dreamweaver erstellt.
      Hiernach habe ich diese Datei mal mit dem Editor (notepad) geöffnet und unter "Speichern unter" gesehen, dass das Encoding auf ANSI steht.
      Das habe ich auf "UTF-8" geändert und siehe da, alles funzt wie es soll (also ohne Änderungen am Code).

      Was nun genau der Unterschied ist wenn ich eine Datei als ANSI oder UTF-8 speicher muss ich noch herausbekommen, aber es läuft erst einmal ...

      Gruß Stefan

      Kommentar


      • #4
        Aber vorsicht, der Notepad speichert die in UTF-8 mit Bom (Unicode Signatur) das könnte von darstellungsfehler bis zu "header already sends at..." führen.

        Besser ist die Datei im Dreamweaver aufzumachen STRG + J drücken, dann auf Titel/Kodierung und unter Kodierung UTF-8 währen. Das häckchen darunter NICHT setzen.

        Kommentar


        • #5
          super, den hatte ich gesucht ... ich konnte mir nicht vorstellen, dass ich das unter DW nicht einstellen kann, nur hatte ich die Stelle nicht gefunden ...

          thx

          Kommentar


          • #6
            Kannte ich auch noch nicht.

            Aber mich würde jetzt auch interessieren, warum das Script unter UTF-8 gespeichert sein muss. Ich verarbeite einen polnischen Zeichensatz mit Ansi-gespeichertem Script ohne Problem.

            Kommentar

            Lädt...
            X