在sql server中出现Unicode问题,某些字符无法保存在varchar字段中

时间:2014-05-20 08:18:03

标签: sql-server unicode character-encoding varchar nvarchar

我正在处理我的数据库中的unicode内容。我有一个数据字段定义为varchar(max), 我阻止用户在此字段中保存未知字符,例如“≤”(所有unicode高于U + 00FF)。 在这样做时,我发现一些字符如果被发送保存在这个字段中将显示为“?”,所以我认为“U + 00FF”之上的所有unicode字符都会像这样显示,但后来我发现显示“?”的“U + 201B”显示为“?”但是下一个字符“U + 201C”“”“显示为”“”。 有人可以向我解释为什么会这样吗?

更新:对不起,如果我不清楚,但我不想转换为nvarchar,我想保持我的字段为varchar。 我需要理解的是为什么像“'”这样的字符显示为“?”在“varchar”字段中,下一个unicode字符“”“正确显示?

2 个答案:

答案 0 :(得分:1)

如果要存储Unicode字符,则应使用nvarchar类型,而不是varchar

答案 1 :(得分:1)

您需要将数据类型更改为nvarchar,它将包含任何unicode字符,其中varchar限制为8位代码页。

有关详细信息,请阅读以下链接中接受的答案。

Difference between varchar and nvarchar