Announcement

Collapse
No announcement yet.

Utf-8 odbc php json

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

  • Utf-8 odbc php json

    Hallo,

    ich weiß nicht, ob ich hier zwingend richtig bin, aber lest einmal selbst.

    folgende Situation:
    PHP macht Datenbankabfragen die per ODBC an MSSQL 2005 Express geschickt werden. Die Ergebnisse werden per json_encode in JSON übertragen.
    Nun scheint aber irgendeine Geschichte mit Umlauten nicht zu funktionieren. Mit wird stattdessen im JSON "null" angezeigt. Wenn ich das Array normal ausgeben lassen, funktionieren die Umlaute. json_encode kann leider nur UTF-8 umwandeln und dort liegt vermutlich auch das Problem.
    In der PHP.ini wurde defaultCharset als UTF-8 angegeben und das funktioniert auch soweit denke ich. Nun verwendet MSSQL leider anscheinend nicht UTF-8 sondern UCS-2. Wie bekomme ich MSSQL dazu UTF-8 auszuspucken oder wo kann ich ansonsten ansetzen? In PHP jedesmal von UCS-2 in UTF-8 kodieren? Funktioniert das zuverlässig?

    Vielen Dank

  • #2
    MS SQL kann nur UCS-2. Wenn du UTF8 willst mußt du das selbst machen oder dein DB-Treiber.

    Comment


    • #3
      Und wie mache ich dies? Kann ich dem SQL ODBC-Treiber (der implementiert ist) irgendein Parameter übergeben oder muss ich einen anderen Treiber benutzen?

      Danke

      Comment


      • #4
        Die ODBC-Seite ist außen vor. Du mußt hier schon auf PHP-Seite suchen (Bin kein PHP-Profi, Kenn nur den MS SQL Server ganz gut).

        Comment


        • #5
          Okay, dann weiß ich besser wo ich ansetzen muss. Bequemer wäre natürlich gewesen wenn MSSQL UTF-8 rausschicken würde oder der ODBC-Treiber umkodiert.

          Eine Frage am Rande, hat das UCS-2 irgendeinen Sinn warum es verwendet worden ist/wird? Oder ging es Microsoft nur darum, keinen richtig verwendeten Standard zu benutzen ?

          Comment


          • #6
            Originally posted by Thomas2 View Post
            Eine Frage am Rande, hat das UCS-2 irgendeinen Sinn warum es verwendet worden ist/wird? Oder ging es Microsoft nur darum, keinen richtig verwendeten Standard zu benutzen ?
            Und wieso soll UCS-2 kein Standard sein? Vielmehr ist es beim MS SQL-Server nicht nötig alle Daten auf dem Übertragungsweg zur DB erst nach UTF8 zu konvertieren wie es MySQL oder Oracle aufgrund der Einschränkungen des Übertragungsprotokoll nötig haben! Windows läuft z.B. komplett auf UCS-2 und deshalb ist jedes Umwandlen hier eine unnötige Performancebremse.

            Comment


            • #7
              Vielleicht hilft ja das ein bisschen weiter:
              Description of storing UTF-8 data in SQL Server

              bye,
              Helmut

              Comment


              • #8
                Hallo,

                ich finde es eigentlich generell erstaunlich das man sich im Jahre 2009 wohl immernoch mit verschiedenen Zeichensätzen rumschlagen muss.
                Generell brauche ich eigentlich keine echten Unicode Zeichen, nur die Funktion json_encode nimmt halt nur UTF-8 an.
                Ich werde also den Weg versuchen, dass mit PHP immer als umwandelt, das scheint der richtige Hebel zu sein.

                Comment


                • #9
                  Hallo,

                  ich verstehe eine Sache immernoch nicht. Ich habe ein Feld ganz normal als varchar definiert. Kommen in dem Inhalt keine Umlaute vor, bekomme ich ASCII zurück, mit Umlauten UTF-8. Ist das nicht irgendwie Quatsch das ich UTF-8 zurück bekomme? Müsste es nicht nur ASCII sein?

                  Comment

                  Working...
                  X