gpt4 book ai didi

sql-server - 使用 BCP 创建 XML 文件生成的文件对非 ASCII 字符的编码无效

转载 作者:数据小太阳 更新时间:2023-10-29 02:10:10 26 4
gpt4 key购买 nike

重现问题,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(小端)- 它会打开并验证。

更新:

changing bcp options to -T -w -r -t seems to make XML valid for most XML consumers, but not Internet Explorer.

最佳答案

试试这个 -

IF OBJECT_ID('tempdb.dbo.##t') IS NOT NULL
DROP TABLE ##t

SELECT x = (
SELECT x
FROM (
VALUES (N'Degree symbol is °')
) t(x)
FOR XML PATH('Foo'), ROOT('BAR'), TYPE
)
INTO ##t

DECLARE @sql NVARCHAR(4000) = 'bcp "SELECT * FROM ##t" queryout "D:\sample.xml" -S ' + @@servername + ' -T -w -r -t'
EXEC sys.xp_cmdshell @sql

有趣的是你的问题的根源...

关于sql-server - 使用 BCP 创建 XML 文件生成的文件对非 ASCII 字符的编码无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35652641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com