UTF-8字符被保存为??在插入时,但在更新

时间:2016-12-07 10:07:24

标签: sql-server sql-server-2008 utf-8

我在MS SQLServer上有一个带有nVarchar列的表。我使用insert语句保存UTF-8字符。它被保存为???。如果我通过update语句使用相同的值更新同一列,则会正确保存。

有关此问题的任何提示吗?使用的排序规则是:SQL_Latin1_General_CP1_CI_AS

1 个答案:

答案 0 :(得分:3)

显示您的插入声明。很可能 - N失踪:

DECLARE @v NVARCHAR(100)='Some Hindi from Wikipedia मानक हिन्दी';
SELECT @v;

结果:Some Hindi from Wikipedia ???? ??????

SET @v=N'Some Hindi from Wikipedia मानक हिन्दी';
SELECT @v;

结果:Some Hindi from Wikipedia मानक हिन्दी

字符串文字前面的N告诉SQL-Server将内容解释为unicode(确切地说:ucs-2)。否则它将被视为 1字节编码的扩展ASCII ,它无法处理所有字符......