2013-03-07 7 views
7

Wenn dänische Zeichen auf SQL-Server in ein Feld mit einem Nvarchar-Datentyp eingefügt werden, werden die dänischen Zeichen falsch formatiert. Beispiel: brændstof wird in brændstof umgewandelt. Wenn es direkt aus dem SQL Server-Abfragefenster stammt, funktioniert es korrekt. Ich habe versucht, verschiedene Sortierungen zu diesem Feld zu geben (Latin1_Genaral, Danish_Greenlandic_100_CI_AI, Danish_Norwegian_CI_AI etc.) Gibt es einen Weg, dies zu erreichen. Ich benutze Microsoft Drivers 3.0 for PHP for SQL Server. Bitte helfen SieEinfügen von dänischen Zeichen auf SQL-Server von PHP

+3

decodiert werden angezeigt. Ich benutze nur MySQL selbst, aber ich bin sicher, dass Sie auch die * Sortierung * (Zeichensatz) einer Zeile in MySQL angeben können. [Hier finden Sie eine Anleitung zu allen Schritten in MySQL/PHP, um sicherzustellen, dass alles den richtigen Zeichensatz enthält - ich bin sicher, dass Sie einige dieser Informationen für MSSQL verwenden könnten. (Http://tympanus.net/codrops/ 2009/08/31/lösung-php-mysql-utf-8-issues /) – h2ooooooo

+0

nitpickery, aber "kollation" ist nicht das gleiche wie ein charset. – troelskn

+0

Bitte verdeutlichen Sie diesen vagen, aber kritischen Satz: 'Wenn es direkt vom SQL Server Abfragefenster ist, funktioniert es korrekt.' – Tim

Antwort

2

benutzen ich eine Arbeit um, verschlüsselte nur html die dänische Zeichenfolge, bevor sie in Tabelle insering, und wenn gerade

2

anstelle eines Literal 'æ', verwenden Sie seine CHAR-Äquivalent und sehen, was passiert.

1

Wie Vermutung hier:

denke ich, das Problem in dem PHP-Teil ist, nicht in dem MySQL-Teil (wir lesen Sie für dieses Feld eine Codierung verwendeten speziell für Danish). Oder noch früher. Schon mal versucht, ein 'ä' auf eine HTML-Seite zu setzen (das echte Zeichen, nicht ä)? Es wird in einige andere Zeichen konvertiert, wie das Beispiel in Ihrer Frage. So sehe ich zwei Möglichkeiten:

  • Benutzereingabe ist falsch URL-codierte
  • PHP einige Codierung verwendet, die nicht dänische Zeichen unterstützt.

Oder vielleicht 3 & 4 (weniger wahrscheinlich):

  • Die Zeichen falsch auf dem Client kommen (wenn Sie einige Zeichen an den Server erneut zu senden Ich weiß nicht, ob das der Fall ist)
  • der User-Agent wandelt die Zeichen und sendet somit fehlerhafte Zeichen an den Server (oder zeigt sie falsch, was die richtigen Zeichen sind auf dem Server bedeuten würde, aber Sie können sie mit Ihrem Browser nicht anzeigen)
2

Ich weiß jetzt nicht, was mit dänischen Briefen ist, aber ich hatte Probleme mit Armenisch in SQL SERVER. Ich habe dieses Problem so gelöst. Das klingt wie ein normales utf8/Unicode-Problem

insert into sometable(field) values(N'myArmenianText');