即使使用 Unicode 源和目标 (SSIS),字符也会显示不正确

2024-03-28

我遇到了代码页 unicode/非 unicode 问题,需要专业知识才能理解它。

在 SSIS 中,我正在从 UTF8 编码的文本文件中读取数据。数据类型均为 DT_WSTR(unicode 字符串)。目标是 NVARCHAR,它也是 unicode。

非标准字符(例如 Ú 未​​正确编码))显示为黑框问号)。

如果字符在输入文件中正确显示,源设置为 DT_WSTR,目标为 nvarchar,为什么字符无法正确呈现?

我尝试将源列的代码页设置为 65001,但在 SSIS 中,只能更改 STR(非 unicode)类型的代码页。

如果您能帮助理解为什么所有 unicode 字段仍然无法正确存储 unicode 值,我将不胜感激。

OP评论更新

如果我端到端使用 Unicode 类型,那么我的输出似乎没问题(输入是 DT_WSTR,目标列是 nvarchar,再次提取到文本时,输出列是 DW_WSTR。唯一的问题是 sql server management studio,它似乎不是当将输出设置为网格或文本时,能够在查询结果中正确呈现 unicode 字符。这是一个转移注意力的事情,如果忽略这一点,整个过程不会出现问题


试图找出问题所在

将unicode字符从平面文件导入到SQL Server目标没有问题,您唯一要做的就是将平面文件编码设置为unicode,并且结果列必须是NVARCHAR。根据您的问题,看来您已经满足了要求,所以我可以说:

Unicode 字符已成功导入到 SQL Server,但由于某些原因 SQL Server Management Studio 无法在网格结果中显示 Unicode 字符,要检查数据是否正确导入,请将结果视图更改为Result To Text.

GoTo Tools >> Options >> Query Results >> Results To Text

在我提供的第二个参考链接中,他们提到:

如果您使用 SSMS 进行查询,请将输出类型从“网格”更改为“文本”,因为根据字体,网格无法显示 unicode。

或者您可以尝试更改网格结果字体,(在我的机器上,我使用 Tahoma 字体,它正常显示 unicode 字符)

实验

您可以执行以下测试(取自下面的链接)

SET NOCOUNT ON;



CREATE TABLE #test

  (  id int IDENTITY(1, 2) NOT NULL Primary KEY

    ,Uni nvarchar(20) NULL);

INSERT INTO #test (Uni) VALUES (N'DE: äöüßÖÜÄ');

INSERT INTO #test (Uni) VALUES (N'PL: śćźłę');

INSERT INTO #test (Uni) VALUES (N'JAP: 言も言わずに');

INSERT INTO #test (Uni) VALUES (N'CHN: 玉王瓜瓦甘生用田由疋');




SELECT * FROM #test;


GO

DROP TABLE #test;

尝试使用以下查询Result as Grid and Result as Text选项。

参考

  • SQL Server 2012 在结果中不显示 unicode 字符 https://stackoverflow.com/questions/39881779/sql-server-2012-not-showing-unicode-character-in-results
  • sql server 2008 不显示和插入 unicode 字符! https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b8b52b86-7dc9-4e59-9a54-9b826ca8e710/sql-server-2008-not-showing-and-inserting-unicode-characters?forum=sqldatabaseengine
  • 使用 SQL Server 集成服务导入 UTF-8 Unicode 特殊字符 https://www.mssqltips.com/sqlservertip/3119/import-utf8-unicode-special-characters-with-sql-server-integration-services/
  • Microsoft SQL Server Management Studio - 文本形式的查询结果 https://stackoverflow.com/questions/20012552/microsoft-sql-server-management-studio-query-result-as-text
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即使使用 Unicode 源和目标 (SSIS),字符也会显示不正确 的相关文章

随机推荐