【问题标题】:Unicode issue in sql server, some characters cannot be saved in a varchar fieldsql server 中的 Unicode 问题,某些字符无法保存在 varchar 字段中
【发布时间】:2014-05-20 08:18:03
【问题描述】:

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

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

【问题讨论】:

  • 请阅读我更新后的问题,对造成的误解深表歉意。
  • “显示”是什么意思?在什么应用中?
  • 在 sql server 中,如果我在表中看到它或者我选择并打印它。为什么 sql server 显示不正确,而更高的 unicode 可以显示?!
  • 可能是使用 UTF-8 编码?
  • 是的,我想是的,但我希望我知道它是如何对一个角色而不是另一个角色做到这一点的!

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


【解决方案1】:

如果你想存储Unicode字符,你应该使用nvarchar类型,而不是varchar

【讨论】:

  • 请阅读我更新后的问题,对造成的误解深表歉意。
  • 并请删除它的重复,以便我可以获得更多答案:S
【解决方案2】:

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

有关更多信息,请阅读下面此链接中接受的答案。

Difference between varchar and nvarchar

【讨论】:

  • 请阅读我更新的问题,对造成的误解深表歉意。
猜你喜欢
  • 2022-08-18
  • 2015-04-06
  • 2014-10-27
  • 2018-02-16
  • 2018-12-05
  • 2021-11-18
  • 2013-10-18
  • 1970-01-01
  • 2013-08-27
相关资源
最近更新 更多