编码名称语法不正确

Incorrect encoding name syntax

代码:

declare @filedata xml 
select @filedata = BulkColumn from openrowset(bulk 'E:\Scripts\apc.xml',single_blob) x;

以上是我的错误代码:

Msg 9442, Level 16, State 1, Line 2 XML parsing: line 1, character 38, incorrect encoding name syntax

谁能帮我解决这个问题?我无法理解语法错误的地方。

SQL-Server 无法导入任何类型的编码...

您正在将此文件导入为 BLOB,这只是一堆字节。这必须解释为数据类型 SQL 服务器知道。

您可以尝试将变量声明为 VARCHAR(MAX)NVARCHAR(MAX),并希望此变量的内容符合您的期望。

在这种情况下,您可以使用 CHARINDEXSUBSTRINGSTUFF 截断整个 xml-declaration (<?xml blah?>)。或者,您可以使用 REPLACE 为您的 encoding="blah" 设置不同的值。如果 VARCHAR 适合您,请使用 UTF-8,如果 NVARCHAR.

,则使用 UTF-16

如果这没有帮助,您必须在阅读之前更改光盘上的文件。最好是utf-16,可以直接读成XML。但不要忘记将其写入 encoding 或删除声明。