SQL 服务器 OPENROWSET(BULK 'C:\Temp\Test.xml', SINGLE_CLOB) Returns 前导字符乱码

SQL Server OPENROWSET(BULK 'C:\Temp\Test.xml', SINGLE_CLOB) Returns Garbled Leading Characters

当使用 OPENROWSET 将 xml 文件的内容写入 nvarchar(MAX) 列时,我的前导字符出现乱码。

即使在没有插入的情况下执行 select,结果也是一样的。

SELECT Xml.BulkColumn
FROM OPENROWSET(BULK 'C:\Temp\Test.xml', SINGLE_CLOB) Xml

结果:

我尝试了各种 CODEPAGE 选项,但得到了相同的结果。

SELECT Xml.BulkColumn
FROM OPENROWSET(BULK 'C:\Temp\Test.xml', CODEPAGE='RAW', SINGLE_CLOB) Xml

在记事本中文件看起来不错。

解决方案是将 xml 文件的编码从 UTF-8 更改为 Unicode,然后使用 SINGLE_NCLOB 而不是 SINGLE_CLOB。

SELECT Xml.BulkColumn
FROM OPENROWSET(BULK 'C:\Temp\Test2.xml', SINGLE_NCLOB) Xml