2

私は Sql Server 2008 を使用しており、要件の 1 つは多言語サポートを提供することです。主な言語は、英語、ドイツ語、フランス語、日本語です。

COLLATION が Latin1_General_CI_AS であるテーブルがあります。テキストデータを格納する列には、この COLLATION 'Japanese_CI_AS' があります

SQL Server Management Studio (SSMS) で次の SQL を実行すると

DECLARE @translation nvarchar(max)
SET @translation = 'クッキー(Cookie)を許可してください'

PRINT @translation

UPDATE [ResourceTranslations]
SET Translation = @translation  
WHERE Id = 4

挿入される値は「????(Cookie)?????????」で、これは出力される値でもあります。

SSMS で日本語の文字に問題がある可能性はありますか? print ステートメントは、値が '????(Cookie)?????????' に変更されていることを示しているようです。テーブルに挿入される前に。

どんな助けやアドバイスもありがたく受け入れました。

4

1 に答える 1

3

文字列リテラルを処理するのではなくN処理するために必要な接頭辞がないため、文字列リテラルはデータベースのデフォルトの照合で最初に強制され、その過程で日本語の文字が失われます。nvarcharvarcharvarchar

以下は期待どおりに動作するはずです。

DECLARE @translation nvarchar(max)
SET @translation = N'クッキー(Cookie)を許可してください'

PRINT @translation

UPDATE [ResourceTranslations]
SET Translation = @translation  
WHERE Id = 4
于 2012-11-02T17:01:11.267 に答える