首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unicode列可以包括Server中的非Unicode值吗?

Unicode列可以包括Server中的非Unicode值吗?
EN

Database Administration用户
提问于 2013-09-25 17:01:52
回答 1查看 1.1K关注 0票数 2

我需要将Unicode列值从UTF16-LE转换为UTF-8,然后导入到MySQL中。

假设NVARCHARNTEXTNCHARBITINTDECIMALFLOATDATETIME的列都必须是Unicode,因此不会有任何字符无法从UTF-16 be转换为UTF-8,只需将值导出到.txt文件并在导入到MySQL之前用UTF-8编码将它们重新保存,是否安全?

假设Server中的unicode列在导出到CSV文件后不包含任何不能从UTF-16 Is转换为UTF-8的字符,这是否安全?

我的导入失败,不管我是否用UTF-8编码重新保存CSV .所以,我假设:

  1. Server允许unicode列中的非unicode字符不能正确转换为UTF-8 (我对此表示怀疑,因此我的问题是检查我的假设);或
  2. 它在这个过程中的其他地方失败了,比如重新保存CSV文件,添加一些MySQL不喜欢的东西。

我使用bcp将值导出到CSV。然后,我用UTF-8编码重新保存它,因为MS删除了直接导出UTF-8的能力。最后,我使用MySQL的LOAD DATA INFILE导入失败的地方。

EN

回答 1

Database Administration用户

发布于 2015-11-28 18:56:47

假设NVARCHAR、NTEXT、NCHAR、位、INT、十进制、浮点数和日期时间的列都必须是UNICODE.

只有XMLN-prefixed类型(NCHARNVARCHARNTEXT 自Server 2005发布以来已被废弃,因此请不要使用它)是Unicode。您提到的其他类型不是字符串,也不是作为字符串存储的,因此它们与此问题无关。

..。因此不会有任何字符无法从UTF-16 be转换为UTF-8.

这是一个不完全正确的问题。Unicode字符是Unicode字符,无论编码是UTF-8、UTF-16 or、UTF-16 or、UTF-32 or还是UTF-32 or。现在,数据本身可能包含无效的序列,例如无效的代理对。但是,这些字符在UTF-8或UTF-32编码中也不是有效字符。

..。只需将值导出到.txt文件并在导入到MySQL之前用UTF-8编码重新保存它们?

那么,您需要确保使用Unicode编码保存初始导出文件。因此,您可以在-N-w选项中使用BCP

另外,确保您所做的不仅仅是更改文件的Byte Order Mark (BOM),而且实际上是将Unicode / UT-16LE字符转换为UTF-8。

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

https://dba.stackexchange.com/questions/50508

复制
相关文章

相似问题

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