2

我正在使用 Sql Server 2008,我们的要求之一是提供多语言支持。主要语言是英语、德语、法语和日语。

我有一张表,其 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 是否有可能遇到日文字符问题?似乎打印语句告诉我该值正在更改为 '????(Cookie)?????????' 在它被插入表格之前。

感激地接受任何帮助或建议。

4

1 回答 1

3

您缺少将N字符串文字视为所需的前缀,nvarchar而不是varchar字符串文字在数据库的默认排序规则中被强制转换为varchar首先在此过程中丢失这些日文字符。

以下应该按预期工作。

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

PRINT @translation

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