2011-07-05 18 views
0

需要以UTF-8编码保存XML,然后在T-SQL代码中使用它来提取数据。SQL Server 2008:UTF-8代码页面65001的排序

默认数据库排序规则是SQL_Latin1_General_CP1_CI_AS。

我不知道是否可以在SQL Server 2008中保存和使用UTF-8数据,但我有一个想法,在XML列中使用UTF-8(65001)代码页的排序规则为了将数据保存在UTF-8中。

有没有人知道如何在SQL Server中使用UTF-8数据可行或有其他想法?

+0

没有必要以UTF-8存储数据。用于xml列的UTF-16非常好。当数据通过附加层(在我的情况下是Java)提供给外部时,它可能总是被转换为UTF-8。 – Tim

回答

1

如果您正在处理xml数据,请将其存储为xml数据类型。这应该考虑到你的任何问题(即如何存储它),并且当你处理它时(例如xpath表达式,xquery等),你可以节省自己将其转换为xml的工作。

0

NVARCHAR列应该做的工作就好了。

+0

如何在UCS-2编码而不是UTF-8中将结果返回给客户端? – Tim

+0

如果使用NVARCHAR存储XML,则您的XML必须包含UTF-16 BOM内容或具有'encoding =“utf-16”'(并且可能没有指定任何非对等编码)。如果你不这样做,那么你可能遇到的一些问题包括SQL Server自己内置的XML解析XML的东西。 – binki

0

您可以将所有Unicode字符存储在xmlnvarchar列中。使用什么样的排序规则无关紧要。少数罕见的中文字符(来自辅助平面)可以作为nchars(代理对)成对存储。但是没有数据丢失。