Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 10 von 10
  1. #1
    Zaungast
    Registriert seit
    26.02.2003
    Beiträge
    24

    Standard 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. #2
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    12.008

    Standard

    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

  3. #3
    Zaungast
    Registriert seit
    26.02.2003
    Beiträge
    24

    Standard

    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

  4. #4
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    12.008

    Standard

    Hallo,

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

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

  5. #5
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    7.036

    Standard

    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

  6. #6
    Zaungast
    Registriert seit
    26.02.2003
    Beiträge
    24

    Standard

    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..

  7. #7
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    7.036

    Standard

    > 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

  8. #8
    Zaungast
    Registriert seit
    26.02.2003
    Beiträge
    24

    Standard

    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..

  9. #9
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    7.036

    Standard

    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

  10. #10
    Aufsteiger
    Registriert seit
    26.02.2003
    Ort
    Schweiz, 3629
    Beiträge
    62

    Standard

    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

 

 

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •