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