SQL Server的utf8 howto?

我已经从MySQL数据库迁移到SQL Server(政治),原始的MySQL数据库使用UTF8。

现在我读了SQL Server 2008不支持utf8的https://dba.stackexchange.com/questions/7346/sql-server-2005-2008-utf-8-collat​​ion-charset ,这是个玩笑吗?

SQL Server承载多个数据库,大部分是拉丁文编码的。 由于迁移数据库旨在用于Web发布,我想保持utf8编码。 我是否错过了某些东西,或者是否需要在应用程序级别进行编码/解码?

没有! 这不是一个笑话。

看看这里: http : //msdn.microsoft.com/en-us/library/ms186939.aspx

字符数据types是固定长度,nchar或可变长度,nvarchar,Unicode数据并使用UNICODE UCS-2字符集。

另外在这里: http : //en.wikipedia.org/wiki/UTF-16

较早的UCS-2(2字节通用字符集)是一种类似的字符编码,它在1996年7月的Unicode标准2.0版中被UTF-16所取代。

UTF-8不是一个字符集,它是一种编码。 UTF-8的字符集是Unicode。 如果要存储Unicode文本,请使用nvarchar数据types。

如果数据库将使用UTF-8来存储文本,那么您仍然不会将文本作为编码的UTF-8数据获取,您可以将其作为解码文本输出。

您可以轻松地将UTF-8编码的文本存储在数据库中,但不会将其存储为文本,而是将其作为二进制数据( varbinary )存储。

请注意,从Microsoft SQL Server 2016起, bcpBULK_INSERTOPENROWSET支持UTF-8。

附录2016-12-21:SQL Server 2016 SP1现在为所有版本的MS SQL(包括Standard和Express)启用Unicode压缩(以及其他大多数以前仅用于Enterprise的function)。 这与UTF-8支持并不相同,但如果目标是减less西方字母的磁盘空间,它也会带来类似的好处。

实际上使用UTF8没有问题,通过创buildSQLCLR UDF,您可以从Microsoft下载代码。 检查此链接: http : //technet.microsoft.com/en-us/library/ms160893(v=sql.90).aspx