Announcement

Collapse
No announcement yet.

Problem mit Umlauten mit MS-SQL und PHP

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

  • Problem mit Umlauten mit MS-SQL und PHP

    Hallo,

    ich habe eine Anwendung die mit PHP und MySQL lief. Diese soll nun umgestellt werden auf MS-SQL.

    Das Problem sind die Umlaute, beim Schreiben in die Datenbank wird da Müll draus.

    Im form-tag steht "accept-charset="UTF-8"", also habe ich die Daten mal vor dem Schreiben in die DB mit utf8_encode bearbeitet, bewirkt aber auch keine Änderung..

    MySQL frisst die ganzen Daten problemlos...

    P.S.: Gut wäre eine Lösung die MySQL auch verarbeiten kann, so daß man nicht an allen Stellen eine Unterscheidung zwischen den DB einbauen muß.

  • #2
    Hallo,

    vielleicht hilft folgendes weiter: <i> <a href="/webx?14@@.4a87122a/7">Andreas Kosch "Unicodes in Datenbank Speichern?" 10.09.2004 06:19</a> </i&gt

    Comment


    • #3
      Hallo,

      danke erstmal für den Hinweis.

      Stored Procedures kann/mag ich leider nicht einsetzen, da ich dann den ganzen Code wieder umschreiben müsste.

      Ich dachte man könnte vielleicht irgendwo nocht etwas einstellen das ich nicht gefunden habe...

      Die Variante mit dem vorgestellten N funktioniert leider auch nicht, das N wird einfach missachtet.

      Es kann doch irgendwie schlecht möglich sein, daß es so kompliziert ist einen Umlaut in einer MS-SQL-DB zu speichern

      Comment


      • #4
        Hallo,

        &gt;..daß es so kompliziert ist einen Umlaut ...

        in der Microsoft-Welt ist es auch nicht kompliziert :-

        Comment


        • #5
          Hallo Cryptic,

          ich hab zwar nur mit Delphi und MS-SQL zu tun, aber ich kann sagen das es grundsätzlich fast problemlos möglich ist, alle Zeichen (chinesisch, cyrilisch, Umlaute) in einer MS-SQL-Datenbank unterzubringen:

          - Wie ist die Datenbank definiert (varchar/nvarchar)?<br>
          - Welche MS-SQL-Version wird verwendet? <br>
          - Welche Daten kommen an, wenn z.B. ein ä gespeichert wird? Evtl. sieht Du hier nur die UTF-8-Codierten Daten, auch wenn bei MS-SQL und nvarchar der bessere Weg ist direkt mit UTF-16 zu arbeiten

          Comment


          • #6
            Hallo,

            verwendet wird der SQL Server 2000.

            - ich habe alles probiert, varchar, nvarchar, text, es kommt bei allem das gleiche raus
            - bei einem ä wird +a in die Datenbank geschrieben.

            Das das UTF-8 codierte Daten sind glaube ich nicht, da ich rausgefunden habe, das MS-SQL kein UTF-8 unterstützt, sondern UCS-2.

            Also habe ich die Daten vorm Speichern in UCS-2 umgewandelt und dann an die DB geschickt, allerdings ohne Erfolg...

            So langsam hab ich diesen PHP <-> MS-SQL-Treiber im Verdacht nicht ganz richtig zu ticken..

            Comment


            • #7
              > das MS-SQL kein UTF-8 unterstützt, sondern UCS-2.
              Meine Idee war das der PHP-MS-SQL-Treiber da eine Wandlung vornimmt.

              +a deutet wirklich auf ein Treiber-Problem hin. Kannst Du den Hersteller kontaktieren/befragen

              Comment


              • #8
                Der Hersteller wird wohl Microsoft sein. Und mal ehrlich, der Aufwand lohnt nicht.

                Meine Lösung: Ich konvertiere alle Umlaute in eigene Codes, z.B. ä in aeae, beim rauslesen halt wieder zurück. Nicht wirklich schön, aber funktioniert.

                Und für die Zukunft weiß ich eben, welche Server ich zu meiden habe..

                Comment


                • #9
                  Ich denke nicht das der Hersteller des PHP-MS-SQL-Treibers Microsoft ist. Entweder ist der gleich bei der PHP-Umgebung dabei oder von einen sonstigen Hersteller. Aber nicht MS. MS bietet für die Datenbank noch den alten ODBC und den neueren ADO/OLE DB-Zugang (und für .NET einen native ADO.NET-Treiber). Aber mit Sicherheit keinen speziellen PHP-Treiber

                  Comment


                  • #10
                    Ich hatte das Problem auch, und habe in mühsamer Suche folgende Lösung gefunden..

                    Klick mal folgendes durch:
                    MS SQL Server -> Client Network Utility -> Registerkarte "DB-Library Options" und dann "Automatic Ansi to OEM conversation" demarkieren..

                    Guckst du:
                    http://www.alonso.ch/shared/mssql_ansi2oem_bug.jp

                    Comment

                    Working...
                    X