我正在处理我的数据库中的unicode内容。我有一个数据字段定义为varchar(max), 我阻止用户在此字段中保存未知字符,例如“≤”(所有unicode高于U + 00FF)。 在这样做时,我发现一些字符如果被发送保存在这个字段中将显示为“?”,所以我认为“U + 00FF”之上的所有unicode字符都会像这样显示,但后来我发现显示“?”的“U + 201B”显示为“?”但是下一个字符“U + 201C”“”“显示为”“”。 有人可以向我解释为什么会这样吗?
更新:对不起,如果我不清楚,但我不想转换为nvarchar,我想保持我的字段为varchar。 我需要理解的是为什么像“'”这样的字符显示为“?”在“varchar”字段中,下一个unicode字符“”“正确显示?
答案 0 :(得分:1)
如果要存储Unicode字符,则应使用nvarchar
类型,而不是varchar
答案 1 :(得分:1)
您需要将数据类型更改为nvarchar,它将包含任何unicode字符,其中varchar限制为8位代码页。
有关详细信息,请阅读以下链接中接受的答案。