问题复现,SQL 代码:
CREATE TABLE dbo.FooTable(SomeString NVARCHAR(100));
INSERT INTO dbo.FooTable(SomeString)
VALUES('Degree symbol is °');
DECLARE @Code NVARCHAR(4000) = N'BCP "SELECT (SELECT SomeString FROM dbo.FooTable FOR XML PATH(''Foo''), ROOT(''BAR''), TYPE )" QUERYOUT "F:\Output\File.XML" -c -C RAW -T ';
EXEC xp_cmdshell @Code;
DROP TABLE dbo.FooTable;
它会创建一个包含以下内容的文件:
<BAR><Foo><SomeString>Degree symbol is °</SomeString></Foo></BAR>
这些文件在Internet Explorer和Firefox中不被识别为有效的XML文件(Chrome会产生错误
error on line 1 at column 23: Encoding error
)。如果我使用记事本打开并以Unicode(小端)保存,它就可以打开和验证。更新:
将选项更改为
-T -w -r -t
似乎可以使XML对大多数XML消费者有效,但不能用于Internet Explorer。
bcp
选项更改为-T -w -r -t
看起来可以解决大多数 XML 消费者的问题,但不适用于 Internet Explorer... - Ginden