Announcement

Collapse
No announcement yet.

Verschiedene Sprachen darstellen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Verschiedene Sprachen darstellen?

    Hi Leute,

    ich will unsere Webseite etwas umbauen. Bisher war es so, dass ich Inhalte (alles deutsche Texte) aus unserer Datenbank abgefragt habe und diese angezeigt wurden. Soweit kein Problem.

    Nun kommen neben deutschen Texten, aber auch noch türkische, russische und Spanische hinzu. Da weiß ich gar nicht, wie ich deren Zeichen darstellen soll.

    Wir haben eine MySQL Version > 4.1. Diese unterstützt ja mehrere Zeichensätze. Da fangen auch schon meine Fragen an. In der Tabelle werden die einzelnen Datensätze unterschiedliche Sprachen haben. Muss ich nun für jeden neuen Eintrag den Zeichensatz mit angeben? Wie geht sowas in MySQL?

    Reicht es beim Auslesen der Daten einfach aus, wenn ich in der ersten Zeile im HTML den Zeichensatz angebe und dann einfach die Daten aus der Datenbank lade und anzeige?

    Was ist wenn ich auf einer Seite eine russischen und einen türkischen Text anzeigen will?

    Im internet bin ich leider nicht fündig geworden und ich weiß das hier viele unter euch mehr Erfahrung haben als. Ich wäre euch dankbar, wenn Ihr mir zu meinen Fragen etwas sagen könnt, bzw. einige gute Quellen im Internet habt.

    Beste Grüße

    Philipp

  • #2
    Hi Philipp,

    das Zauberwort heißt UTF8. Wenn Du deine Tabellen auf UTF8 umstellst (s. MySQL - Docu) und im HTML als Zeichensatz UTF8 angibst, dann kannst Du alle Sprachen in deinem Dokument darstellen. Auch alle Eingaben des Benutzers werden als UTF8 zum Server übermittelt.
    In PHP gibt es übrigens Funktionen um Zeichen zu convertieren (siehe dazu unter Multibyte - Support in der PHP-Docu).

    Zur INFO: UTF8 kodiert alle Zeichen mit einem Code größer 127 als eine Zeichenfolge. So werden z.B. Umlaute mit zwei Zeichen kodiert. Näheres kannst Du in der PHP-Doku nachlesen.

    Gruß
    Richar

    Comment


    • #3
      Hallo Richard,

      danke erstmal für deine Antwort. Habe mich mal im phpmyadmin näher umgesehen und keine Möglichkeit entdeckt Tabellen oder Datenbanken auf UTF8 umzustellen.

      Es sollen ja nicht alle Datenbanken auf UFT8 umgestellt werden, sondern dann nur eine, bzw. im notfall nur bestimmte Tabellen.

      Wäre nett wenn du mir da noch einen Hinweis geben könntest, dann würde ich mal einige Versuche starten.

      Beste Grüße

      Philip

      Comment


      • #4
        Hi Philipp,
        über phpMyAdmin gibt es diese Möglichkeit nicht. In der Docu zum Create-Statement gibt es aber die Option "CHARACTER SET ".
        Du mußt wohl die Create-Statements von Hand erzeugen.

        Hier ein Beispiel aus der Doku:

        <pre>CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);</pre&gt

        Comment


        • #5
          Hi Richard,

          ich habe mal so eine Tabelle UTF8 Tabelle angelegt und mit ca. 1,8 Millionen Datensätzen gefüllt. (erfordert meine Anwendung und das musste ich dann gleich testen )

          Ich bin jetzt nur grad etwas durcheinander gekommen. Es geht ja darum ausländische Zeichen darzustellen. Mit UTF 8 kein Problem. Ich stell mir grad die Frage was der unterschied zwischen UTF8 und Unicode ist. Gibst dann doch zeichen die nicht mit UTF8 dargestellt werden können? Weil Unicode ist meiner meinung nach mächtiger als UTF8. FÜr mich selbst ist die Schiene der Internationalisierung nämlich auch ganz neu.

          Meine Daten werden zumindest Unicode in die Datenbank geschrieben.

          Vielleicht kannst du meine Wissenslücke nochmal was ausfüllen. Wäre dir sehr dankbar.

          Grüße Philip

          Comment


          • #6
            Hi Richard,

            ich habe mal so eine Tabelle UTF8 Tabelle angelegt und mit ca. 1,8 Millionen Datensätzen gefüllt. (erfordert meine c++Anwendung und das musste ich dann gleich testen )

            Ich bin jetzt nur grad etwas durcheinander gekommen. Es geht ja darum ausländische Zeichen darzustellen. Mit UTF 8 kein Problem. Ich stell mir grad die Frage was der unterschied zwischen UTF8 und Unicode ist. Gibst dann doch Zeichen die nicht mit UTF8 dargestellt werden können? Weil Unicode ist meiner meinung nach mächtiger als UTF8 oder nicht?. Für mich selbst ist die Schiene der Internationalisierung nämlich auch ganz neu.

            Meine Daten werden zumindest Unicode in die Datenbank geschrieben. Zumindest werden dabei Unicode Zeichen unterstützt.

            Vielleicht kannst du meine Wissenslücke nochmal was ausfüllen. Wäre dir sehr dankbar. Bin ich mit UTF8 und Ansi auf der sicheren Seite für verschiedene Sprachen oder sollte ich doch lieber auf Unicode wechseln. Geht das eigentlich? Bin da wohl recht durcheinander

            Grüße Philip

            Comment


            • #7
              Hi Richard,

              deutsche Sonderzeichen stehen in meiner Tabelle nun utf8 kodiert und werden auf meiner Testseite korrekt angezeigt.

              Nun habe ich im PHPMyAdmin mal russischen Text einkopiert. Auf meiner Testseite wird dieser immer mittels ??? angezeigt. Im phpmyadmin wird der korrekt dargestellt?

              Woran kann sowas liegen?

              Philip

              Comment


              • #8
                So, saß da nun den ganzen Tag ran. Habe danach mal direkten Unicode in die DB kopiert. Diesen hatte er danach perfekt angezeigt.

                Im PHPMyAdmin steht dann sowas wie z.b:

                "& # 1052; & # 1086; & # 1103; & # 1090; & # 1072;"

                (musste zur korrekten darstellung noch einige Leerzeichen einbauen)

                Bin gespannt ob da später eine Suche drauf funktioniert

                Nochmal besten Dank für deine Hilfe. Die Sache mit dem Unterschied zu utf8 und unicode ist mir aber dennoch nicht klar. Wenn du dazu noch was schreiben magst. wäre ich dir sehr dankbar.

                Beste Grüße

                Philip

                Comment


                • #9
                  Unicode ist ein Standard, mit praktisch alle bekannten Zeichen erfasst werden können. UTF-8 ist eine Kodierungsart für diese Unicode-Zeichen:
                  - http://de.wikipedia.org/wiki/Unicode
                  - http://de.wikipedia.org/wiki/UTF

                  Comment


                  • #10
                    Hi Philipp,

                    zu #5:
                    hast Du in phpMyAdmin in der Konfiguration den Zeichensatz auf utf8 eingestellt?
                    ($cfg['DefaultLang'] = 'utf-8'

                    zu #6:
                    So wie es aussieht hast Du nicht Unicode sondern die HTML - Notation für Unicode - Zeichen in die Datenbank kopiert. Die Zeichen &#nnnn; werden vom Browser interpretiert und in das korrekte Sonderzeichen umgewandelt. In der Datenbank haben sie nichts zu suchen (Suche geht nicht).

                    Ansonsten:
                    Damit alles reibungslos funktioniert sollte sowohl die angezeigte Seite (HTML aus dem PHP-Skript), phpMyAdmin und die Datenbank mit UTF-8 arbeiten.
                    Im HTML solltes du dazu im Header
                    <pre><meta http-equiv="content-type" content="text/html; charset=UTF-8"></pre>
                    eintragen.

                    Gruß
                    Richar

                    Comment

                    Working...
                    X