Zurück   Entwickler-Forum > Datenbanken > MS SQL Server und MSDE

Antwort
 
Themen-Optionen Ansicht

Problem mit Umlauten mit MS-SQL und PHP
Alt 11.11.2004, 12:02   #1
cryptic
Zaungast
 
cryptic ist offline
Registriert seit: 26.02.2003
Beiträge: 24
cryptic befindet sich auf einem aufstrebenden Ast
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ß.
  Mit Zitat antworten

Anzeige

Alt 11.11.2004, 13:07   #2
Andreas Kosch
Forenheld
 
Andreas Kosch ist offline
Registriert seit: 26.02.2003
Beiträge: 12.132
Andreas Kosch befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

vielleicht hilft folgendes weiter: Andreas Kosch "Unicodes in Datenbank Speichern?" 10.09.2004 06:19
  Mit Zitat antworten

Alt 11.11.2004, 18:50   #3
cryptic
Zaungast
 
cryptic ist offline
Registriert seit: 26.02.2003
Beiträge: 24
cryptic befindet sich auf einem aufstrebenden Ast
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
  Mit Zitat antworten

Alt 12.11.2004, 06:20   #4
Andreas Kosch
Forenheld
 
Andreas Kosch ist offline
Registriert seit: 26.02.2003
Beiträge: 12.132
Andreas Kosch befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

>..daß es so kompliziert ist einen Umlaut ...

in der Microsoft-Welt ist es auch nicht kompliziert :-
  Mit Zitat antworten

Alt 12.11.2004, 08:14   #5
Bernhard Geyer
Forenheld
 
Bernhard Geyer ist offline
Registriert seit: 26.02.2003
Beiträge: 6.091
Bernhard Geyer befindet sich auf einem aufstrebenden Ast
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
  Mit Zitat antworten

Alt 12.11.2004, 11:56   #6
cryptic
Zaungast
 
cryptic ist offline
Registriert seit: 26.02.2003
Beiträge: 24
cryptic befindet sich auf einem aufstrebenden Ast
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..
  Mit Zitat antworten

Alt 12.11.2004, 12:46   #7
Bernhard Geyer
Forenheld
 
Bernhard Geyer ist offline
Registriert seit: 26.02.2003
Beiträge: 6.091
Bernhard Geyer befindet sich auf einem aufstrebenden Ast
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
  Mit Zitat antworten

Alt 12.11.2004, 17:53   #8
cryptic
Zaungast
 
cryptic ist offline
Registriert seit: 26.02.2003
Beiträge: 24
cryptic befindet sich auf einem aufstrebenden Ast
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..
  Mit Zitat antworten

Alt 13.11.2004, 17:16   #9
Bernhard Geyer
Forenheld
 
Bernhard Geyer ist offline
Registriert seit: 26.02.2003
Beiträge: 6.091
Bernhard Geyer befindet sich auf einem aufstrebenden Ast
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
  Mit Zitat antworten

Alt 08.12.2004, 10:41   #10
Michael Bieri
Zaungast
 
Michael Bieri ist offline
Registriert seit: 26.02.2003
Beiträge: 25
Michael Bieri befindet sich auf einem aufstrebenden Ast
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
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu



Alle Zeitangaben in WEZ +2. Es ist jetzt 07:58 Uhr.



© 1995–2009 Software & Support Verlag GmbH. Vervielfältigung nur mit Genehmigung des Verlags.