Sql server SSI加载给定编码中的XML无效字符

Sql server SSI加载给定编码中的XML无效字符,sql-server,xml,encoding,ssis,Sql Server,Xml,Encoding,Ssis,我正在使用SQL Server 2014\SSIS 我有一个C#脚本任务,它从一个正在工作的第三方XML文件加载XML数据。最近,它未能说明: Invalid character in the given encoding. Line 201, position 169. 使用断点,生成错误时会显示以下C#行: XMLDataset.ReadXml(XMLFileNameWithPath); fyi-XMLFileNameWithPath是一个本地变量,我将XML文件名传递给它 当我在Not

我正在使用SQL Server 2014\SSIS

我有一个C#脚本任务,它从一个正在工作的第三方XML文件加载XML数据。最近,它未能说明:

Invalid character in the given encoding. Line 201, position 169.
使用断点,生成错误时会显示以下C#行:

XMLDataset.ReadXml(XMLFileNameWithPath);
fyi-XMLFileNameWithPath是一个本地变量,我将XML文件名传递给它

当我在Notepadd++中打开XML文件并转到第201行\position 169时,似乎是字符“ñ”造成的

XML的第一行表示它在UTF 8中:

<?xml version="1.0" encoding="UTF-8"?>

我添加了一个脚本任务来在加载之前预处理XML文件,以将编码从UTF-8更改为ISO-8859-1。现在加载,我不再收到编码错误

Credit due where Credit due where Credit due我正在使用此处详述的查找和替换-尽管它表示文本文件,但它与XML文件一起工作:


我添加了一个脚本任务来在加载之前预处理XML文件,以将编码从UTF-8更改为ISO-8859-1。现在加载,我不再收到编码错误

Credit due where Credit due where Credit due我正在使用此处详述的查找和替换-尽管它表示文本文件,但它与XML文件一起工作:


这篇文章似乎建议用unicode替换字符。因此,在转换为XML之前,请替换它。SSIS具有XML源适配器。请试一试,而不是编写脚本任务/组件。@YitzhakKhabinsky我无法使用本机SSIS XML源-XML文件包含50个输出列,这意味着50个输出表,然后尝试确定如何连接它们。我不喜欢合并连接组件-在数据流中有50次,事实上,您可以读取
encoding=“UTF-8”
并不意味着文件确实是UTF-8编码的。您可以尝试删除声明(带有
的部分),然后由系统决定。在智能编辑器(如记事本++)中打开文件以检查真正的编码(可能会更改此编码)可能会有所帮助。@Shnugo如果我在记事本++中打开文件,它确实会声明它是UTF-8。XML文件来自第三方-您是否建议在加载之前对XML执行查找\替换?本文似乎建议您使用unicode替换字符。因此,在转换为XML之前,请替换它。SSIS具有XML源适配器。请试一试,而不是编写脚本任务/组件。@YitzhakKhabinsky我无法使用本机SSIS XML源-XML文件包含50个输出列,这意味着50个输出表,然后尝试确定如何连接它们。我不喜欢合并连接组件-在数据流中有50次,事实上,您可以读取
encoding=“UTF-8”
并不意味着文件确实是UTF-8编码的。您可以尝试删除声明(带有
的部分),然后由系统决定。在智能编辑器(如记事本++)中打开文件以检查真正的编码(可能会更改此编码)可能会有所帮助。@Shnugo如果我在记事本++中打开文件,它确实会声明它是UTF-8。XML文件来自第三方-您是否建议在加载XML之前对其执行查找\替换?