2016-05-03 16 views
0

I know Zeichenfolgen müssen in SQL Server (2012) INSERT-Anweisungen mit N 'vorangestellt werden, um sie als UNICODE zu speichern, sie müssen jedoch auch (SELECT-Anweisung) auf eine bestimmte Weise abgerufen werden sie sind in UNICODE?Lesen von Unicode-Zeichenfolgen aus SQL Server

Ich bin in der Lage, internationale Strings korrekt mit N-Notation zu speichern, aber wenn ich SELECT-Abfrage ausführen, um die Datensätze zurück zu holen, kommt es als Fragezeichen. Meine Abfrage ist sehr einfach.

SELECT COLUMN1, COLUMN2 FROM TABLE1 

ich bei anderen möglichen Gründe suchen, die dieses Problem verursacht haben könnten, aber zumindest möchte ich über die SQL-Anweisung beseitigen. Sollte es die Spalten COLUMN1 und COLUMN2 korrekt lesen, wenn beide UNICODE-Strings in N-Notation speichern? Muss ich etwas tun, um zu sagen, dass es UNICODE ist?

+0

'es kommt als Fragezeichen 'SQL Server Management Studio oder Ihre Anwendung? Überprüfen Sie, ob es mit SSMS funktioniert, wenn ja, dann kann Ihre App wahrscheinlich die Daten nicht richtig lesen (Treiber, Kodierung, ...) – lad2025

+0

@ lad2025 Meine Anwendung – zar

Antwort

0

Ihr Code sollte in SSMS funktionieren. Wenn nicht, versuchen Sie Folgendes:

Die Konvertierung schlägt im Anwendungscode fehl. Achten Sie darauf, es erneut zu besuchen.

0

Innerhalb von Management Studio sollten Sie nichts Besonderes tun, um die korrekten Werte anzuzeigen. Stellen Sie sicher, dass die Spalten in Ihrer Tabelle als Unicode-Zeichenfolgen NVARCHAR anstelle von ANSI-Zeichenfolgen VARCHAR definiert sind.

Das folgende Beispiel veranschaulicht das Konzept:

CREATE TABLE UnicodeExample 
    (
     MyUnicodeColumn NVARCHAR(100) 
     ,MYANSIColumn VARCHAR(100) 
    ) 

    INSERT INTO UnicodeExample 
    (
     MyUnicodeColumn 
     ,MYANSIColumn 
    ) 
    VALUES 
    (
     N'איש' 
     ,N'איש' 
    ) 

    SELECT * 
    FROM UnicodeExample 

    DROP TABLE UnicodeExample 

Im obigen Beispiel wird die Säule MyUnicodeColumn als NVARCHAR definiert ist (100) und MYANSIColumn als VARCHAR (100) definiert ist. Die Abfrage wird das Ergebnis für MyUnicodeColumn korrekt zurückgeben, aber wird zurückgeben ??? für MYANSIColum.

Verwandte Themen