MeTRiX: Internationale PHP-Webanwendung

Hallo,

leider bin ich zu o.g. Thema nicht richtig fündig im Forum geworden.
Ich möchte eine PHP-Webanwendung erstellen, die quasi ein Mini-Warenwirtschaftssystem abbildet. Als Programmiersprache dient PHP und als Datenbank (leider) ein MSSQL-Server. Meine recht "einfache" Frage in diesem Zusammenhang bezieht sich auf die Internationalisierung.

Es ist geplant, dass in diesem Mini-WWS auch chinesische Text eingefügt werden sollen. Sprich: chinesischer Zeichensatz ;-)

Soweit meine bisherigen Infos sind, muss a) der SQL-Server den Zeichensatz verstehen und logischerweise b) der entsprechende Browser. PHP sollte da keine Probleme machen oder doch? Beim einfügen der Daten in die DB verlasse ich mich ganz normal auf "magic_quotes_gpc = On".

Bedenken habe ich jedoch bei der Ausgabe. Bisher verwende ich immer folgenden Zeichensatz
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
und unterstütze dieses beim Ausgeben aus der Datenbank durch die PHP-Funktion "htmlentities()". Meine Frage wäre hier: Kann das mit einem chinesischen Zeichensatz funktionieren? Ich befürchte eher nein ;-) Wie gehe ich dort am besten vor, um alle Zeichensätze problemlos abzudecken? In der HTML-Ausgabe UTF-8 verwenden und kein htmlentities()?

Würde mich freuen, wenn mir einer diese Fragen beantworten könnte. Ich möchte nämlich nach Möglichkeit vorher Fehler bei der Internationalisierung ausschließen und nicht nachher alles umbauen ;-)

Vielen Dank!

  1. Hallo,

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    Das funktioniert - mein eigenes Content Management System setzt auch nur ISO-8859-1 ein (bis jetzt) und ich hatte schon Kunden mit Chinesischen Seiten. Die Zeichen werden dann kodiert in &#xxxx; der Datenbank abgelegt. Unschön an dieser Lösung ist der hohe Speicherbedarf.

    Bei Chinesischen Zeichen immer dran denken: font-size: 16pt + ;)

    Wie gehe ich dort am besten vor, um alle Zeichensätze problemlos abzudecken? In der HTML-Ausgabe UTF-8 verwenden und kein htmlentities()?

    PHP bietet die Funktionen utf8_encode und _decode. Ich will mein eigenes CMS demnächst auf UTF-8 umstellen, muss aber auch noch recherchieren, wie meine DBM-Systeme damit klarkommen (MySQL, SQLite). Die Ausgabe macht in der Regel keine Probleme mehr (<meta ... charset="UTF-8" />)

    Viele Grüße,
    Michael

    --
    PS: Info's zu meinem CMS findest Du hier: http://www.nailware.de/de/produkte/nailware_cms

    1. Hallo,

      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

      Das funktioniert - mein eigenes Content Management System setzt auch nur ISO-8859-1 ein (bis jetzt) und ich hatte schon Kunden mit Chinesischen Seiten. Die Zeichen werden dann kodiert in &#xxxx; der Datenbank abgelegt. Unschön an dieser Lösung ist der hohe Speicherbedarf.

      Bei Chinesischen Zeichen immer dran denken: font-size: 16pt + ;)

      Wie gehe ich dort am besten vor, um alle Zeichensätze problemlos abzudecken? In der HTML-Ausgabe UTF-8 verwenden und kein htmlentities()?

      PHP bietet die Funktionen utf8_encode und _decode. Ich will mein eigenes CMS demnächst auf UTF-8 umstellen, muss aber auch noch recherchieren, wie meine DBM-Systeme damit klarkommen (MySQL, SQLite). Die Ausgabe macht in der Regel keine Probleme mehr (<meta ... charset="UTF-8" />)

      Also es würde reichen, wenn ich die chinesischen Daten 1:1 in die DB schreibe und bei der Ausgabe auf UTF-8 mit utf8_encode gehe?

      Viele Grüße,
      Michael

      --
      PS: Info's zu meinem CMS findest Du hier: http://www.nailware.de/de/produkte/nailware_cms

      1. Hi,

        Also es würde reichen, wenn ich die chinesischen Daten 1:1 in die DB schreibe und bei der Ausgabe auf UTF-8 mit utf8_encode gehe?

        Äh - jain... was verstehst du unter 1:1? Wenn du die Chinesischen Textdateien in UTF-8 hast und deine Datenbank den Zeichensatz unterstützt, kannst du die Daten direkt in die DB schreiben. Bei der Ausgabe mit PHP brauchst du kein utf8_encode mehr, da die Daten dann ja schon in UTF8 aus der DB kommen.

        Viele Grüße,
        Michael

        1. Hi,

          Also es würde reichen, wenn ich die chinesischen Daten 1:1 in die DB schreibe und bei der Ausgabe auf UTF-8 mit utf8_encode gehe?

          Äh - jain... was verstehst du unter 1:1? Wenn du die Chinesischen Textdateien in UTF-8 hast und deine Datenbank den Zeichensatz unterstützt, kannst du die Daten direkt in die DB schreiben. Bei der Ausgabe mit PHP brauchst du kein utf8_encode mehr, da die Daten dann ja schon in UTF8 aus der DB kommen.

          Mit 1:1 verstehe ich, dass die Daten über diese Webanwendung in ein Textarea-Feld eingegeben werden und ich diese dann so direkt in die DB schreibe. Dann wäre beim Auslesen das encode noch nötig?!?

          Viele Grüße,
          Michael

          1. Hi,

            Mit 1:1 verstehe ich, dass die Daten über diese Webanwendung in ein Textarea-Feld eingegeben werden und ich diese dann so direkt in die DB schreibe. Dann wäre beim Auslesen das encode noch nötig?!?

            Okay - so funktioniert es bei meinem Content Management System auch. Wenn du dass Chinesische Zeichen mit dem IME eingibst, werden die automatisch in den entsprechenden Code (&#xxxx;) übersetzt in der Datenbank abgelegt. Aber wie gesagt: das CMS verwendet zur Zeit ISO-8859-1 und nicht UTF-8. Das müsstest du mal testen.

            Viele Grüße,
            Michael

            1. Hi,

              Mit 1:1 verstehe ich, dass die Daten über diese Webanwendung in ein Textarea-Feld eingegeben werden und ich diese dann so direkt in die DB schreibe. Dann wäre beim Auslesen das encode noch nötig?!?

              Okay - so funktioniert es bei meinem Content Management System auch. Wenn du dass Chinesische Zeichen mit dem IME eingibst, werden die automatisch in den entsprechenden Code (&#xxxx;) übersetzt in der Datenbank abgelegt. Aber wie gesagt: das CMS verwendet zur Zeit ISO-8859-1 und nicht UTF-8. Das müsstest du mal testen.

              Viele Grüße,
              Michael

              vielen Dank für die Hilfe. Werde dann nun alles mit UTF-8 aufbauen und utf8_encode verwenden.