SQL Serverに、Unicodeデータを含める必要のある列を含むデータベースがあります(これには、世界中のユーザーのアドレスが含まれています。たとえば、カイロの場合はالقاهرة)。
この列は、データベースのデフォルト(Latin1_General_CI_AS)を照合したnvarchar列ですが、英語以外の文字を含むSQLステートメントを介してデータが挿入され、?????として表示されることに気付きました。
解決策は、nプレフィックスを使用していなかったということのようです。
INSERT INTO table (address) VALUES ('القاهرة')
それ以外の:
INSERT INTO table (address) VALUES (n'القاهرة')
Unicodeはnvarchar列に自動的に変換され、このプレフィックスは必要ないという印象を受けましたが、これは正しくないようです。
問題は、この列に?????と表示されるデータがまだあることです。SQL Server Management Studioで、それが何であるかわかりません。
データはまだそこにありますが、正しくない文字エンコードで表示されないのに回収可能です(もしそうなら、どうすればデータを回復できますか?)、またはそれは永久に失われていますか?
ありがとう、
トム