2012-09-18 71 views
1

我目前正在处理的网站收集各种来源的数据(输入人类)。数据存储在数据库的Nvarchar字段中。目前该网站通过meta标签指定该字符集是UCS-2。到现在为止,该网站已经要求英文答案。不过,尽管我们会允许/要求至少某些字段以其母语输入(即在这种情况下为中文)。根据网站上的一些研究和其他帖子,似乎UCS-2和UTF-16在技术上存在一些小差异,但它们几乎完全相同。如果重要的话,这是一个运行在SQL Server数据库上的asp.net网站。所以我的问题是:我应该将UCS2还是UTF16转换为UTF?

是否有一个理由让我改变meta标记来指定UTF-16?

我会与文字方式显示的任何问题,如果我更改编码? (我觉得目前的数据应显示相同的,因为它的大多数/所有英语,但我想确认)

+1

,你必须在你的HTML元标记应为你使用的HTML文档的编码的编码。你当然不应该错配两者,所以你的选择是非常有限的。 – usr

+2

其实,我很惊讶你首先指定了UCS-2。你的服务器发送到浏览器的HTML实体是每个字符两个字节的UCS-2? – usr

+0

我不知道。我没有构建原始母版页。我只知道我们需要做这个更新,所以我检查并注意到它是UCS-2。如果没有问题,我会改变它。 – William

回答

1

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

如果您可以轻松地将编码规范切换为UTF-16,那么除非您的数据被不知道“UTF-16”含义的古代软件所使用,否则应该没有什么理由立即这样做。

+0

现在它只是母版页中的元标记。因此,如果不会导致数据库中当前数据出现任何问题,那么将其更改为UTF-16就太过简单了。我不知道我们会得到什么中文字符,但似乎是因为我期待他们,所以改变它可能是一个好主意;正确?它只在网站上使用,所以我认为任何现代化的浏览器都可以使用UTF-16。 – William

+0

是的,但像@usr我想知道你是否真的在网络服务器上提供16位每字符的数据 - 这有点不寻常。您确定您可以看到的元标记没有被HTTP响应头中的字符集规范覆盖吗? –

+0

它可能很好。当我进行此更新时,我将向Web配置中添加一个全球化部分,并同时指定UTF-16。这应该强制他们是相同的正确的?编辑:只检查网站标题;它指定的是utf-8,但meta标签是ucs-2。我会解决它们都是UTF-16 – William