1

次のシナリオでの 3 つの質問:

  • Latin1 コードページを使用し、「?」を表示する SQL Server 2005 運用データベース Management Studio の無効な文字について。
  • サーバーとワークステーションからデータを入力するサービスとしての SomeCompanyApp クライアント。
  • "?" を表示する SomeCompanyApp 管理コンソール アジアのキャラクター向け。

これは製品データベースなので、書き込みません。

データベースにデータを保存しているクライアント アプリが実際に Unicode として正しく保存されているかどうかはわかりませんが、コンソールに Latin1 を使用しているため表示されません。

Q1:私が理解しているように、SQL Server はコードページに関係なく nvarchar テキストを Unicode として保存します。それとも完全に間違っているのでしょうか。コードページが Latin1 の場合、そのコードページにないものはすべて "?" に変換されます。

Q2:テキスト欄でも同じですか?

Q3: SQL Server Management Studio または Visual Studio といくつかのコード (どの言語でもかまいません:)) を使用してデータベースにクエリを実行し、文字が実際に日本語、中国語、韓国語などとして表示されるかどうかを示す方法はありますか? ?

私の最終的な目標は、データベースからデータを抽出し、UTF-8 を使用して別のデータベースに保存し、日本語やその他のアジアの文字を自分のクライアント Web アプリケーションにあるものとして表示することです。 Q3の回答で落ち着きます。 私はいくつかの言語でコーディングでき、少なくとも他のいくつかは理解できますが、Unicode について十分な知識がありません。私の webapp が pyodbc と cassandra を使用することを知りたい場合は、これらの質問は問題ではありません。

4

1 に答える 1

2

SSMS で NVARCHAR 列に挿入するときは、文字列の前にN:を付けていることを確認する必要があります。

これは機能しません:

 INSERT INTO dbo.MyTable(NVarcharColumn) VALUES('Some Text with Special Char')

SQL Server は、文字列VALUES(..)を VARCHAR として解釈し、特殊文字を取り除きます。

これが必要です

 INSERT INTO dbo.MyTable(NVarcharColumn) VALUES(N'Some Text with Special Char')

テキスト リテラルの前に を付けると、N'..'SQL Server はこれをずっと NVARCHAR として扱うようになります。

これは Q3 の解決に役立ちますか??

于 2010-12-03T06:05:26.923 に答える