UCS2或UTF16应该转换为UTF吗?

时间:2012-09-18 18:06:55

标签: asp.net sql-server character-encoding

我目前正在处理的网站从各种来源(人类输入)收集数据。数据存储在数据库的Nvarchar字段中。目前,该站点通过元标记指定charset为UCS-2。到目前为止,该网站已经要求用英语答案。很快我们将允许/要求至少一些字段以他们的母语(即本例中的中文)输入。根据网站上的一些研究和其他帖子,似乎UCS-2和UTF-16几乎是相同的,只有一些细微的技术差异。如果重要,这是一个在SQL Server数据库上运行的asp.net网站。所以我的问题是:

我是否有理由更改元标记以指定UTF-16?

如果更改编码,我是否会对字符的显示方式有任何疑问? (我认为当前的数据应该显示相同,因为它是大部分/全部英语,但我想确认一下)

1 个答案:

答案 0 :(得分:1)

UCS-2是UTF-16的严格子集 - 它只能编码基本多语言平面中的字符(即,从U + 0000到U + FFFF)。如果你需要在补充平面中表达字符(包括一些相对罕见的中文字符),它们必须使用两个16位代码单元(“代理”)对进行编码,如果是这样,你的数据将无效UCS-2但必须声明为UTF-16。

如果您可以轻松地将编码规范切换为UTF-16,除非您的数据被不知道“UTF-16”含义的古老软件所使用,否则没有理由不立即将其编码。 / p>