首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL Server数据库中使用UTF-8排序规则?

如何在SQL Server数据库中使用UTF-8排序规则?
EN

Stack Overflow用户
提问于 2012-09-20 20:35:35
回答 5查看 232.1K关注 0票数 91

我已经将一个数据库从mysql迁移到SQL Server (politics),原始的mysql数据库使用UTF8。

现在我在https://dba.stackexchange.com/questions/7346/sql-server-2005-2008-utf-8-collation-charset上看到SQL Server2008不支持utf8,这是在开玩笑吗?

SQL Server托管多个数据库,其中大部分是拉丁语编码的数据库。由于迁移的数据库是用于web发布的,所以我想保留UTF8编码。我是否遗漏了什么,或者我是否需要在应用程序级别进行enc/dec?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-20 21:45:15

不是的!这不是开玩笑。

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

固定长度nchar或可变长度nvarchar Unicode数据的

字符数据类型,并使用UNICODE UCS-2字符集。

这里还有:http://en.wikipedia.org/wiki/UTF-16

Unicode 2(2字节通用字符集)是一种类似的字符编码,在1996年7月的

标准2.0版中被UTF16所取代。

票数 27
EN

Stack Overflow用户

发布于 2015-08-21 05:23:28

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

如果数据库使用UTF-8存储文本,您仍然不会将文本作为编码的UTF-8数据提取出来,而是将其作为解码的文本提取出来。

您可以很容易地将UTF8编码的文本存储在数据库中,但是您不会将其存储为文本,而是将其存储为二进制数据(varbinary)。

票数 36
EN

Stack Overflow用户

发布于 2018-09-24 21:26:01

看起来这将最终在SQL Server2019中得到支持!SQL Server 2019 - whats new?

来自BOL的

UTF-8支持

完全支持广泛使用的UTF-8字符编码作为导入或导出编码,或者作为文本数据的数据库级或列级排序规则。CHARVARCHAR数据类型中允许使用UTF-8,并在将对象的排序规则创建或更改为具有UTF8后缀的排序规则时启用。

例如,从LATIN1_GENERAL_100_CI_AS_SCLATIN1_GENERAL_100_CI_AS_SC_UTF8。UTF-8仅适用于支持补充字符的Windows排序规则,如SQL Server 2012中引入的那样。NCHARNVARCHAR只允许使用UTF-16编码,并且保持不变。

根据所使用的字符集,此功能可能会显著节省存储空间。例如,使用支持NCHAR(10) -8的排序规则将具有ASCII字符串的现有列数据类型从CHAR(10)更改为UTF-8,可以将存储需求减少近50%。这是因为对于相同的Unicode字符串,NCHAR(10)需要22个字节来存储,而CHAR(10)需要12个字节。

2019-05-14更新:

文档现在似乎更新了,并在"Collation and Unicode Support“一节中解释了我们从MSSQL2019开始的选项。

2019-07-24更新:

Article by Pedro Lopes -微软高级项目经理介绍为Azure SQL数据库引入UTF8支持

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12512687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档