SQL BCP 导出 XML 为 UTF-8 格式

SQL BCP Export XML To UTF-8 Format

我有一个执行存储过程并通过 BCP 将结果导出到 XML 文件的查询。该过程有效,除了 XML 文件的编码显示为 UCS-2 并且我被告知要将其导入的系统需要它是 UTF-8。各种线程表明这应该是可能的,但我似乎找不到正确的语法。我的代码如下...

ALTER PROCEDURE [dbo].[cli_sel_c4t_supplier_report]
                    @Consignment_id decimal(18,0),
                    @Supplier decimal(18,0),
                    @Username varchar(50)
AS
BEGIN
DECLARE             @fileName VARCHAR(50),
                    @sqlCmd VARCHAR(8000),
                    @sqlStr Varchar(8000)
SET                 @fileName = 'C:\C4T\' + CONVERT(VARCHAR(10), @Consignment_id) + CONVERT(VARCHAR(20), @Supplier) + '.xml';
SET                 @sqlStr='EXEC [Company Database].[dbo].[cli_sel_c4t_xml_data] @Consignment_id = ' + CONVERT(VARCHAR(10), @Consignment_id) + ', @Supplier = ' + CONVERT(VARCHAR(12), @Supplier) + ';';
SET                 @sqlCmd = 'bcp "' + @sqlStr + '" queryout ' + @fileName + ' -c -C65001 -T -S "SVRNAME\INSTANCE"';
EXEC                cli_ins_audit_c4t_file @Consignment_id=@Consignment_id, @Supplier_id=@Supplier, @Path=@fileName, @Username=@Username
EXEC                xp_cmdshell @sqlCmd;
END

如有任何帮助,我们将不胜感激。

谢谢

史蒂夫

要生成 UTF-8 而不是 UTF-16,请使用 -c 而不是 -w 参数。 bcp中的-c选项按单字节导出字符。

明确指定代码页 1252 和 UTF-8:-c -C 1252