Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server OPENROWSET(大容量';C:\Temp\Test.xml';,单CLOB)返回乱码的前导字符_Sql Server_Openrowset - Fatal编程技术网

Sql server SQL Server OPENROWSET(大容量';C:\Temp\Test.xml';,单CLOB)返回乱码的前导字符

Sql server SQL Server OPENROWSET(大容量';C:\Temp\Test.xml';,单CLOB)返回乱码的前导字符,sql-server,openrowset,Sql Server,Openrowset,当使用OPENROWSET将xml文件的内容写入nvarchar(MAX)列时,我的前导字符会乱码 即使在没有插入的情况下进行选择,结果也是一样的 SELECT Xml.BulkColumn FROM OPENROWSET(BULK 'C:\Temp\Test.xml', SINGLE_CLOB) Xml 结果: 我尝试了各种CODEPAGE选项,但得到了相同的结果 SELECT Xml.BulkColumn FROM OPENROWSET(BULK 'C:\Temp\Test.xml',

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

即使在没有插入的情况下进行选择,结果也是一样的

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

2016版之前的SQL Server实际上不支持Microsoft文档中的UTF-8:
重要信息我们建议您仅使用SINGLE\u BLOB选项导入XML数据,而不是SINGLE\u CLOB和SINGLE\u NCLOB,因为只有SINGLE\u BLOB支持所有Windows编码转换。
来源: