【发布时间】:2019-08-12 13:43:36
【问题描述】:
我正在使用 SQL Server 2014\SSIS。
我有一个 C# 脚本任务,它从一直在工作的第 3 方 XML 文件加载 XML 数据。最近它一直没有说明:
Invalid character in the given encoding. Line 201, position 169.
使用断点,以下 C# 行是生成错误的时间:
XMLDataset.ReadXml(XMLFileNameWithPath);
fyi - XMLFileNameWithPath 是我将 XML 文件名传递给的局部变量。
当我在 Notepadd++ 中打开 XML 文件并转到第 201 行\位置 169 时,字符“ñ”似乎是罪魁祸首。
XML 的第一行声明它是 UTF 8:
<?xml version="1.0" encoding="UTF-8"?>
【问题讨论】:
-
这篇文章似乎建议你用unicode替换字符。 support.crossref.org/hc/en-us/articles/…。所以在转换成 XML 之前,先替换它。
-
SSIS 有 XML 源适配器。请试一试,而不是脚本任务/组件。
-
@YitzhakKhabinsky 我不能使用本机 SSIS XML 源 - XML 文件包含 50 个输出列,这意味着 50 个输出表,然后尝试找出如何加入它们。而且我不喜欢 Merge Join 组件 - 在数据流中 50 次
-
Michael,您可以阅读
encoding="UTF-8"的事实并不意味着该文件确实是 utf-8 编码的。您可以尝试将声明带走(带有<?xml blah blah?>的部分)并让系统决定。在智能编辑器(如记事本++)中打开文件以检查真实编码(并可能更改此编码)可能会有所帮助。 -
@Shnugo 如果我在 Notepadd ++ 中打开它确实声明它是 UTF-8。 XML 文件来自第 3 方 - 您是否建议在我加载之前对 XML 执行查找\替换?
标签: sql-server xml encoding ssis