即使使用 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),字符也会显示不正确 的相关文章

  • 根据单元格位置将选择性字段从 Excel 批量插入到 SQL

    我有一个 SSIS 包 我必须从 Excel 工作表中选择一些值并将它们插入到 SQL Server 数据库表中 我是通过执行 sql 任务来完成的 这些是步骤 从映射表中选择所有记录 单元格位置是动态的 因此将其保留在 SQL 表中 大约
  • 我想要表格格式的选择查询结果,例如摘要报告

    例如 month1 month2 month3 total district1 5 2 9 16 district2 1 0 11 12 total 260 150 140 550 这里最终的总数并不重要 但至少我需要显示每个地区每月的数量
  • Unicode字符串的跨平台迭代(使用ICU计算字素)

    我想迭代每个字符一个 Unicode 字符串 处理每个代理对并将字符序列组合为一个单元 一个字素 Example 文本 由代码点组成 U 0928 U 092E U 0938 U 094D U 0924 U 0947 其中 U 0938 a
  • 如何记录存储过程的频率和上次使用时间?

    我想知道一组存储过程运行的频率以及上次使用它们的时间 我正在考虑向数据库中每个存储过程的顶部添加调用以插入 更新表 具有以下架构 SprocName ExecCount LastExec GetCompany 434 2009 03 02
  • 在 SQL 中合并具有重叠日期范围的记录

    编辑 我们当前的服务器是 SQL 2008 R2 因此 LAG LEAD 功能将不起作用 我正在尝试获取表中的多个数据流并将它们组合成 1 个数据流 鉴于下面的 3 个数据流 我希望最终结果是 1 个优先考虑状态 on 的流 递归似乎是最好
  • EF Code First - 提供程序未返回 ProviderManifestToken 字符串

    我试图运行一个非常简单的 EF Code First 示例 但遇到了上述问题 我遵循了这里的建议 如何为 EF Code First 配置 ProviderManifestToken https stackoverflow com ques
  • 如何验证 SQL Server 流量是否已加密?

    我需要证明我们应用程序连接字符串中的加密设置有效 验证从我们的网站到 SQL Server 的流量是否确实已加密的最简单方法是什么 你可以使用类似的东西Wireshark http www wireshark org 查看通过网络传输的数据
  • 如何从单行创建多行 - 规范化表

    我对 SQL 很陌生 并试图弄清楚这一点 我有一个名为 BUDGET 的表 其中包含一年中每个月的 12 列 显示该月的预算余额 所以表格看起来像这样 Department Year Month1 Month2 Month12 ABCD 2
  • SQL Server:多行的 SUM() 包括 where 子句

    我有一张如下所示的表 PropertyID Amount Type EndDate 1 100 RENT null 1 50 WATER null 1 60 ELEC null 1 10 OTHER null 2 70 RENT
  • TSQL 检索当月/当年的所有记录

    我有一个名为 DateFinished 的日期时间字段 我需要能够检索 DateFinished 在当前月份 年份内的所有记录 如果您只有少量行 这将可以获取所有行DateFinished就在今年这个月 SELECT FROM MyTabl
  • 如何让Python bs4在XML上正常工作?

    我正在尝试使用 Python 和 BeautifulSoup 4 bs4 将 Inkscape SVG 转换为某些专有软件的类似 XML 的格式 我似乎无法让 bs4 正确解析一个最小的示例 我需要解析器尊重自闭标签 处理 unicode
  • Emacs lisp:将字符翻译为标准 ASCII 转录

    我正在尝试编写一个函数 将包含 unicode 字符的字符串转换为某种默认的 ASCII 转录 理想情况下 我想要例如 ngstr m成为Angstroem或者 如果不可能的话 Angstrom 同样地 应该成为a x c 或类似的 Ema
  • 如何清除 SQL Server 2005/2008 中的查询执行统计信息

    基于使用从这篇文章中获得的这段非常有用的 SQL 来获取查询执行统计信息最常执行的存储过程 代码日志 https stackoverflow com questions 1942726 most executed stored proced
  • 在SSIS中导入已合并单元格的Excel

    我的问题是在读取合并 组合列单元格的 Excel 文件时 例如 将下面的excel数据读取到数据库中 Excel 输入 ID NAME DEPT FNAME LNAME 1 Akil Tiwari IT 2 Vinod Rathore IT
  • Hibernate Query在系统中运行缓慢,但直接运行时速度很快

    我遇到了与本周播客中类似的问题 我们有一个使用 Hibernate 和 Sql Server 2005 的 Java 应用程序 Hibernate 正在为我们生成一个查询 该查询需要近 20 分钟才能完成 如果我们使用 show sql 进
  • 在 SQL Server 中以编程方式创建数据库

    如何以编程方式创建数据库以及执行此操作所需的最少信息是什么 Please没有 SQL Server 管理对象 API 建议 您可以使用SQL Server 管理对象 API http msdn microsoft com en us lib
  • SSIS - 删除行

    我是 SSIS 新手 需要这方面的帮助 我找到了一个article http consultingblogs emc com jamiethomson archive 2006 09 12 SSIS 3A00 Checking if a r
  • 如何根据 XML 参数更新表

    我有一个表 我想根据 XML 参数中的值更新其 varchar 字段之一 我有下表 ID Constraint Value 1 OldVal 1 OldVal 2 2 OldVal 2 OldVal 1 我想使用以下 XML 来更新Cons
  • Sql Server CTE“无法绑定多部分标识符。”

    我关于这个 cte 查询的最后一个问题很快就得到了回答 我想我会向你们这些 sql 专家提出下一个问题 如果我可以检查我的基本逻辑 然后显示我的代码和语法错误 任何帮助将不胜感激 我的股票交易系统有三个表 符号表 顾名思义 它是股票代码列表
  • 警告:sqlsrv_num_rows() 期望参数 1 为资源,给定布尔值[重复]

    这个问题在这里已经有答案了 出现此警告的原因有很多 但是 我认为我的问题是该表APPT为空 并且不包含任何内容row与t schedule id 我阅读了可能已经有答案的每个问题 并且所有答案都说明了同样的事情 您的 SQL 查询未成功并且

随机推荐