Ankündigung

Einklappen
Keine Ankündigung bisher.

Arabischer Zeichensatz

Einklappen

Neue Werbung 2019

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

  • Arabischer Zeichensatz

    Hallo,
    habe folgendes Problem
    Eine Mehrsprachige Seite, die u.a. auch arabisch darstellen sollte.
    Die inhalte liegen in einer Datenbank.

    Wenn die Datenfelder dort auf utf8_unicode_ci gesetzt sind, sind die Zeichen in der phpmyadmin Umgebeung auch prima arabisch.

    Beim einlesen in die Seite werden sie leider zu "??????????????????"

    Hab mit verschiedenen Einstellungen experimentiert:
    So kann man z.B. im Quellcode von Al Dschasira
    diese Einstellung finden
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1256">

    Dreamweaver gibt bei der Einstellung Arabisch ISO diesen Code aus:
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-6" />

    Und mit <html dir="rtl"> kann man durchaus die Laufrichtung ändern.

    Statische Seiten kann mit einem Programm wie Dreamweaver damit erzeugen, aber wie kann man den Conten aus der Datenbank arabisch erhalten?

    Für einen Tipp wär ich sehr dankbar

  • #2
    Hallo,
    ich würde

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

    benutzen.
    Des Weiteren: hast du vielleicht PHP-Code, in dem htmlentities() vorkommt? Das müsstest du nämlich ein wenig ändern:

    htmlentities($text, ENT_COMPAT, 'UTF-8');

    auch ist es zu empfehlen, ganz zu Anfang folgende zwei Requests an den MySQL-Server zu senden:

    SET NAMES 'utf8';
    SET CHARACTER SET utf8;

    LG
    Manko10
    Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

    Kommentar


    • #3
      Hy Manko10,

      hab das gerade ausprobiert, leider ohne Auswirkung:
      chasrset auf UTF8 und mein code zur Datenbank sieht so aus:

      $query = "SELECT $la FROM cms_statisch WHERE zuordnung = '$z'";
      $result = @mysql_query($query) or die("<p class=\"err\">Konnte nichts finden.</p>");
      list(${$z}) = mysql_fetch_row($result);

      ${$z} = htmlentities(${$z}, ENT_COMPAT, 'UTF-8');

      Wie meinst du das mit SET NAMES 'utf8';
      SET CHARACTER SET utf8;? Beim einlesen in die DB?
      Grüße
      Steffi

      Kommentar


      • #4
        Bevor du irgendetwas aus der Datenbank abfragst oder hineinschreibst, einmal absenden:
        PHP-Code:
        mysql_query('SET NAMES "utf8";');
        mysql_query('SET CHARACTER SET utf8;'); 
        Die Lösung des Problems ist meist die Anwendung aller Lösungen zusammen. Ich hoffe, dass es bei dir auch so ist.
        Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

        Kommentar


        • #5
          Hi Steffi,

          wie Manko10 schon gesagt hat: alles erdenkliche auf utf8 trimmen
          Auch bei der erstellten PHP-Datei das encoding auf utf8 stellen. (Bei meinen editor geht das über "File->File Encoding->Utf8". Daran hing's bei mir schon öfters...
          [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

          Kommentar


          • #6
            Aber dann darauf achten, dass die Datei ohne BOM gespeichert wird. PHP hat bis einschließlich Version 5 so seine Problemchen mit BOM.
            Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

            Kommentar


            • #7
              Das Geheimnis bei Zeichensaetzen ist, dass du konsequent einen Zeichensatz verwenden musst (so macht es Aljazeera vermutlich) oder aber du wandelst an den Schnittstellen (MySQL/PHP) explizit um.

              Datenbank, Tabelle und Spalten sollten auf utf8_* gesetzt sein.
              Die Datenbankverbindung sollte mit "SET NAMES 'utf8'" (beachte fehlenden Bindestrich) initiiert werden.
              MySQL :: MySQL 5.0 Reference Manual :: 9.1.4 Connection Character Sets and Collations
              Deine PHP-Skripte sollten den Header Content-Type erzwingen und auch der <meta> Tag sollte UTF-8 vorschreiben. Wenn jetzt noch dein Editor Dateien in UTF-8 abspeichert und kein Kollege mit Notepad dazwischenfunkt, sollte die Seite korrekte arabische Zeichen darstellen.


              Zitat von Steffi.S Beitrag anzeigen
              Hy Manko10,

              hab das gerade ausprobiert, leider ohne Auswirkung:
              chasrset auf UTF8 und mein code zur Datenbank sieht so aus:

              $query = "SELECT $la FROM cms_statisch WHERE zuordnung = '$z'";
              $result = @mysql_query($query) or die("<p class=\"err\">Konnte nichts finden.</p>");
              list(${$z}) = mysql_fetch_row($result);

              ${$z} = htmlentities(${$z}, ENT_COMPAT, 'UTF-8');

              Wie meinst du das mit SET NAMES 'utf8';
              SET CHARACTER SET utf8;? Beim einlesen in die DB?
              Grüße
              Steffi
              Du hast nicht danach gefragt, aber variable Variablen wie ${$z} sind ganz schwer zu debuggen und auch der Name sagt nichts ueber den Inhalt aus. Du wirst massive Probleme bekommen, die Anwendung spaeter zu warten. Das nur nebenbei.
              "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

              Kommentar


              • #8
                many thanx!

                Danke für all eure Tipps.
                Das Problem hat sich jetzt ganz anders gelöst.
                Hatte das ganze bisher lokal getestet.
                Die Datenbank auf dem Server im Netz ist ganz offensichtlich eine andere (ältere?) Version oder anders eingestellt
                Das bedeutet, dass mit SET CHARAKTER o.ä. gar nichts geht, dafür wandelt sich alles, was ich über phpmyadmin eingebe und NICHT gebräuchlichem (?) Zeichensatz nicht entspricht in HTML/UTF8 Code um.
                Damit komme ich prima hin, allerdings kann ich leider nicht genau nachvollziehen, woran es genau liegt oder welche EInstellungen ich lokal ändern müßte, um das da genauso hinzubekommen.

                Kommentar


                • #9
                  War da jetzt noch eine Frage in deinem Posting?
                  "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

                  Kommentar


                  • #10
                    Versionen?

                    ZUnächst wollte ich nur mal für Hilfe Danken und eine Rückmeldung geben.
                    Die Frage, die sich für mich daraus ableitet ist die nach den MySQL-Versionen.
                    Auf meinem lokalen Server läuft MySQL-Client-Version: 5.0.41, auf dem Kunden-Server im Netz MySQL4.0. In dieser Version kann ich keine Zeichensätze o.ä. einstellen, SET Charakter o.ä. läuft nicht, aber die automatische Umwandlung aller "problematischen" Zeichen in html/unicode läuft von selbst.

                    In der neueren Version kann ich "Furz und Feuerstein" einstellen habe aber keine Lösung für mein Problem gefunden.

                    Kennt jemand eine Dokumentation zu den Versionen? Ansonsten müßte die KOnsequenz ja bedeuten, dass man solche Projekte nur mit der 4er Version umsetzen kann...

                    Kommentar


                    • #11
                      Hallo,
                      also testen wuerde ich grundsaetzlich immer die selbe MySQL-Version nehmen. Ich hatte grade erst ein Projekt, da liefen die Statements der 5er Version, online auf der 4.x garnicht (weiss nicht mehr ob 4.1 oder 4.0). Ich glaub sogar mit Syntax-Error abgebrochen. Da gibts also deutliche Unterschiede.

                      Aber zumindest auf 4.1 kann man prima Zeichensaetze fuer Spalten und Tabellen einstellen. Vielleicht nochmal zum Abhaken:

                      Tabelle und Spalten muessen UTF-8 sein (z.B. "utf8_general_ci").
                      Danach kommt PHP ins Spiel, der Editor sollte deine Skripte ebenfalls in UTF-8 abspeichern, sicher ist sicher. Ohne Byte-Order-Mark (BOM). Nach dem Verbindungsaufbau ein "SET NAMES 'utf8'" absetzen. Nun sollten die Daten korrekt bei PHP ankommen. Damit sie auch korrekt beim Browser ankommen noch den header("Content-Type: text/html; charset=utf-8") abschicken, optional, aber sicher ist sicher, noch den <meta> fuer HTML setzen. Das ganze im Browser->Ansicht->Zeichenkodierung ueberpruefen. Wenn jetzt noch falsche Daten angezeigt werden sind sie bereits falsch in der Datenbank.

                      Woher kommen denn die Daten, wie sind sie importiert? Poste mal das Datenbankschema. Welcher Befehl geht konkret nicht?
                      "[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
                        Sicher wäre es besser, auf dem lokalen Server die gleiche Version zu verwenden. Aber bei der XAMPP Geschichte, die ich hier laufen habe, ist es standardmäßig die 5.0.41

                        Die Daten bekomme ich vermutlich in von Übersetzern in Worddokumenten geliefert. Das waren hier jetzt Testläufe, um mal zu sehen, wie das laufen kann. Einstweilen bin ich damit zufrieden, den sowohl arabische wie auch russische Zeichen kann ich so über phpmyadmin, aber auch über ein CMS eingeben. und bei der 4.0 auf dem Server kann ich nichts einstellen.

                        Einstweilen vielen Dank. Wenns hier nochmal klemmt, melde ich mich
                        Steffi

                        Kommentar

                        Lädt...
                        X