我已经将一个数据库从mysql迁移到SQL Server(politics),这是使用UTF8的原始mysql数据库。
现在我读到https://dba.stackexchange.com/questions/7346/sql-server-2005-2008-utf-8-collation-charsetSQL服务器2008不支持utf8,这是一个笑话吗?
SQL Server承载多个数据库,大部分是拉丁语编码的。由于迁移的db是用于web发布的,所以我希望保留utf8编码。我是否遗漏了什么,或者我是否需要在应用程序级别进行enc/dec?
看来SQL Server 2019最终将支持此功能!SQL Server 2019-有什么新功能?
来自BOL:
UTF-8支持
完全支持广泛使用的UTF-8字符编码作为导入或导出编码,或作为文本数据的数据库级或列级排序规则。在CHAR
和VARCHAR
数据类型中允许使用UTF-8,并且在创建对象的排序规则或将其更改为带有UTF8
后缀的排序规则时启用UTF-8。
例如,LATIN1\u GENERAL\u 100\u CI\u AS\u SC
到LATIN1\u GENERAL\u 100\u CI\u AS\u SC\u UTF8
。UTF-8仅适用于支持补充字符的Windows排序规则,如SQL Server 2012中介绍的NCHAR
和NVARCHAR
仅允许UTF-16编码,并保持不变。
根据使用的字符集,此功能可能会显著节省存储空间。例如,使用启用UTF-8的排序规则将包含ASCII字符串的现有列数据类型从NCHAR(10)
更改为CHAR(10)
,这意味着存储需求减少了近50%。这是因为NCHAR(10)
需要22个字节用于存储,而CHAR(10)
需要12个字节用于相同的Unicode字符串。
2019-05-14更新:
文档现在似乎正在更新,并在“排序规则和Unicode支持”一节中解释了MSSQL 2019中的选项。
2019-07-24更新:
佩德罗·洛佩斯(Pedro Lopes)-微软高级项目经理关于引入对Azure SQL数据库的UTF-8支持的文章
不这不是玩笑。
看看这里:http://msdn.microsoft.com/en-us/library/ms186939.aspx
固定长度、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
数据类型。
如果数据库使用UTF-8来存储文本,您仍然无法将文本作为编码的UTF-8数据输出,而是将其作为解码文本输出。
您可以轻松地将UTF-8编码的文本存储在数据库中,但随后您不将其存储为文本,而是将其存储为二进制数据(varbinary
)。
问题内容: 我正在Windows上为Bitbucket Server配置PostgreSQL db。在官方指南中说: 必须将数据库配置为使用UTF-8字符集。 并不是严格说您必须将排序规则设置为UTF-8,但是建议使用其他Atlassian产品,因此我认为Bitbucket Server的情况也是如此。来自Confluence文档的示例: 字符编码必须设置为utf8编码。 排序规则也必须设置为ut
我试图让两个连字符触发短破折号,三个连字符触发长破折号;喜欢 除了工作。以下是我的收获: 这部作品(11部产生2111部产生3部) 这是同一个脚本,但“1”已被替换为“-”,“2”已被替换为“-”,而“3”已被替换为“-“--”-“应该生成”-“和“--”应该生成”-”,但它不起作用,因为我使用的版本中不完全支持Unicode(AutoHotKey.com上的AutoHotKey_L v1.1.0
问题内容: 我有一个具有UTF-8字符集的MySQL表,并尝试通过PHP表单插入该表时,数据库显示以下错误: PDOStatement :: execute():SQLSTATE [HY000]:常规错误:1366错误的字符串值:’\ xE8’为列… 有问题的字符是“cat”,但考虑到数据库和表设置为UTF-8,我不明白为什么这应该是一个问题。 编辑 我已经直接从mysql终端尝试过,并且遇到了同
我需要添加用户名从Facebook到数据库,这些名称有UTF-8字符,如 (ą,č,ę,ė,į,š,ų,ū).当我把它添加到数据库中,例如字母看起来像
问题内容: 我的源表和目标表存在于不同的服务器上。我 用来编写合并语句以使其同步。 谁能解释我如何引用存在于我内部不同服务器上的两个不同数据库 ? 问题答案: 可能的方法: 我建议采用以下方法,而不是尝试在两个数据库服务器之间使用 语句 。 方法1: 为每个SQL Server实例创建两个。例如,如果您有两个数据库SourceDB和DestinationDB,则可以创建两个名为 和的连接管理器 。
我正在学习Executor服务,并试图了解如何与线程池中的线程共享数据列表。我的runnable方法需要从列表中读取数据并进行处理。 池中的所有线程应该只处理一次列表中的不同元素