sql server2008输出的XML文件如何保存成UTF-8的编码格式?

时间:2023-01-05 10:28:37
如题,我现在生成了一个XML文件,但编码格式提示是ANSI的,用XML文件解析器解析的时候报格式错误,只要将其另存为UTF-8编码格式的就可以了,不知道哪位大侠知道怎么样处理呢???急!!!!!
我的程序是这样写的
declare @xml varchar(max)
declare @barcode varchar(100)
declare @actor varchar(100)
declare @actdate datetime
declare @wrongcode varchar(100)
declare @tocorpid varchar(100)
declare @ownerid varchar(100)
declare @corporderid varchar(100)
declare @ordno varchar(100)
declare @itmno varchar(100)
declare @x xml
declare @xml2 xml
declare @title varchar(1000)
declare @title1 varchar(3000)
declare @title2 varchar(3000)
declare @tkdat varchar(100)
declare @tkdat1 varchar(100)
declare @custom varchar(100)
declare @xml1 xml
--set codepage = 65001
set @custom='LAP001'
--if @custom is null or @custom=''
--begin
-- set @return='客户号为空'
-- return 1
--end

--如下使用的是输出用的XML
delete xtab
--create table xtab(xx varchar(max))
insert into xtab values('<?xml version="1.0" encoding="UTF-8" ?>')
insert into xtab values('<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="XML Schema-3.0.xsd" Version="3.0">')
insert into xtab values('<Events><Event name="SalesWareHouseOut" MainAction="WareHouseOut"><DataField>')
--如下生成的保存在log_xml中
set @xml='<?xml version="1.0" encoding="UTF-8"?>'
set @xml=@xml+'<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="XML Schema-3.0.xsd" Version="3.0">'
set @xml=@xml+'<Events><Event name="SalesWareHouseOut" MainAction="WareHouseOut"><DataField>'

declare cu_barcode cursor for
select b.ORDNO,b.itmno,b.BAR_CODE,b.UP_DATE,a.custom
from LOG_ERP_OUT a , barcodeitem  b
where a.ID=b.Erpout_id and a.custom=@custom
open cu_barcode
fetch next from cu_barcode into @ordno,@itmno,@barcode,@actdate,@custom
while @@FETCH_STATUS=0
begin
set @tkdat=CONVERT(varchar, getdate(), 120 )
insert into xtab values('<Data Code="'+@barcode+'" CorpOrderID="'+@ordno+'" Actor="" ActDate="'+@tkdat+'" WrongCode="False" ToCorpID="'+@custom+'" OwnerCorpID="" />')
set @xml=@xml+'<Data Code="'+@barcode+'" CorpOrderID="'+@ordno+'" Actor="" ActDate="'+@tkdat+'" WrongCode="False" ToCorpID="'+@custom+'" OwnerCorpID="" />'
fetch next from cu_barcode into @ordno,@itmno,@barcode,@actdate,@custom
end
set @xml=@xml+'</DataField></Event></Events></Document>'
insert into xtab values('</DataField></Event></Events></Document>')
insert into log_xml(xml,custom)
values(@xml,@custom)
set @title1=@custom
set @title1='bcp data_anyang..xtab out c:/xml/'+@title1+'.xml -c -T -k'
exec master..xp_cmdshell @title1
CLOSE cu_barcode
DEALLOCATE cu_barcode

8 个解决方案

#1


自己顶一下

#2


通常我会用notepad++转换编码格式。

#3


引用 2 楼 claro 的回复:
通常我会用notepad++转换编码格式。


具体说一下好吗

#4


引用 3 楼 mingrui99 的回复:
具体说一下好吗
比较丢人的方式。你用了就明白。

#5


try
bcp里指定-w选项。

#6


案例代码如下供参考,最近刚好在做XML的程序..

--建测试表
create table xtab (xx varchar(max))

--加文件头,指定编码格式.
insert into xtab values('<?xml version="1.0" encoding="UTF-8"?>')
insert into xtab values('<xmlcode>')

--加文件内容(XML)
declare @x xml
set @x=(select name,xtype from sysobjects for xml auto)
insert into xtab select cast(@x as varchar(max))

--加文件尾
insert into xtab values('</xmlcode>')

select * from xtab

--导出为XML文件
exec master..xp_cmdshell 'bcp mydb.dbo.xtab out c:/0710.xml -c -T -k'

-- 结果 c:/0710.xml
--<?xml version="1.0" encoding="UTF-8"?>
--<xmlcode>
--....
--</xmlcode>

#7


以上只是给个例子,说明可以很*的定义XML格式.
具体的XML要什么内容要参照来套用修改一下.

#8


引用 7 楼 ap0405140 的回复:
以上只是给个例子,说明可以很*的定义XML格式.
具体的XML要什么内容要参照来套用修改一下.


已经用asp.net搞定了,SQL2008不支持UTF-8编码格式的XML文件的输出。还是谢谢各位了!

#1


自己顶一下

#2


通常我会用notepad++转换编码格式。

#3


引用 2 楼 claro 的回复:
通常我会用notepad++转换编码格式。


具体说一下好吗

#4


引用 3 楼 mingrui99 的回复:
具体说一下好吗
比较丢人的方式。你用了就明白。

#5


try
bcp里指定-w选项。

#6


案例代码如下供参考,最近刚好在做XML的程序..

--建测试表
create table xtab (xx varchar(max))

--加文件头,指定编码格式.
insert into xtab values('<?xml version="1.0" encoding="UTF-8"?>')
insert into xtab values('<xmlcode>')

--加文件内容(XML)
declare @x xml
set @x=(select name,xtype from sysobjects for xml auto)
insert into xtab select cast(@x as varchar(max))

--加文件尾
insert into xtab values('</xmlcode>')

select * from xtab

--导出为XML文件
exec master..xp_cmdshell 'bcp mydb.dbo.xtab out c:/0710.xml -c -T -k'

-- 结果 c:/0710.xml
--<?xml version="1.0" encoding="UTF-8"?>
--<xmlcode>
--....
--</xmlcode>

#7


以上只是给个例子,说明可以很*的定义XML格式.
具体的XML要什么内容要参照来套用修改一下.

#8


引用 7 楼 ap0405140 的回复:
以上只是给个例子,说明可以很*的定义XML格式.
具体的XML要什么内容要参照来套用修改一下.


已经用asp.net搞定了,SQL2008不支持UTF-8编码格式的XML文件的输出。还是谢谢各位了!