怎么转换xml数据?(100分)

  • 主题发起人 主题发起人 djjsl
  • 开始时间 开始时间
D

djjsl

Unregistered / Unconfirmed
GUEST, unregistred user!
采用com组件存储的xml文件是UTF-8格式,但是在下
需要XML文件为ANSI格式,不知大家有什么办法将UTF-8转化
为ANSI,在下需要在网页中执行这个转换,当然,如果在
COM组件中输出之前执行转换也可以。
 
我也在研究这个问题。大家一起探讨。
 
直接输出XMLDocument.xml,这是一个widestring,不是utf8编码的。
widestring到ansi string的转化不需要我说了吧。
 
不好意思,在下想知道,如果用vb,应该怎么解决。
 
用vb不需要转换,直接用就可以了。
 
不行,在下用rs.save后,那个xml文件是utf-8的格式。
 
这里要注意的是:UTF-8一个汉字是用了3个字节的
 
看来不说清楚点不行。
在vb里面启用xmldom,访问XMLDOMDocument.xml,这是一个字符串,vb是自动区分
unicode的。
剩下来就简单了,打开文件,写文件,关闭文件。
如果用ado recordset对象保存,那么一定是utf8,保存后用xmldomdocument打开,
然后用上面的方法转换。
我只是奇怪,做这种转换有什么意义,转出来的文件是无效的。
简单的代码(可能类型有点不对,因为我手头没有vb):
dim cn As New ADODB.Connection
dim rs As New ADODB.Recordset
cn.Open "dsnstring","uid","passwod"
rs.Open "SELECT * FROM TABLE",cn
rs.Save "d:/test.xml", 1
dimdo
c As New MSXML.DOMDocument
doc.Load "d:/test.xml"
dim s As String
s =do
c.xml
messagebox s '这里会看到s不是utf8
 
在下提一下这个问题出现的原因:
采用vb存储的xml文件由于是utf-8格式,因此当采用别的组件
打开的时候,例如fso,里面的中文就是乱码。
因此,在下需要的是一个xml文件,但这个xml文件必须是ANSI格式。
在下愚昧,觉得JOJO兄的解答好像还是不能解决在下的问题,希望JOJO兄
继续给我解答,欢迎各位继续参与。
 
服你了,教你几个要点
1。不要用其它的组件去读xml文件,你要读文件直接用xmldocument来读。我还没见过必须
使用其它组件来读xml文件的情况,如果有你告诉我。
2。xmldom的save方法相当先进,可以是文件,流,Response等,基本可以满足要求。
3。还不行,去找一本utf8编码的书。实际上这是一种相当简单的编码,自己写一个解码器
顶多花上两个小时。
4。如果你xml功底不错,那么你应该知道为xml选择正确的encoding来满足你的需要。
抱歉啊抱歉,我现在用的机器上什么编程工具也没有,没有办法贴代码了。
 
真的很感激jojo兄的热心,在下现在所做的应用是这样的:
首先,不能上网的客户采用vb编写的程序生成xml形式的数据,这些数据文件
是utf-8格式的。
然后,将这些数据交到可以上交数据的网络客户端,这个时候采用ie来读取
xml数据,我采用fso来读取数据,这个时候需要更改ie的安全设置,但读取出来的中文
就全是乱码了。
在客户端上,fso是可以用的,但xmlDom我觉得不能用,xmlDom的load的url不能是
文件的绝对路径,因此在下不能直接用xmldocument来读。
当然,在下可以直接将数据上载到服务器,然后在服务器端采用xmlDom来读是没有
问题的,但现在在下有必要在客户端就读出数据,请教这种情况,在下该如何做。
 
to:djjsl
保存文件时这样写:
dimdo
c
setdo
c = CreateObject("MSXML2.DOMDocument")
do
c.loadXML "<Hello/>"
set pi=do
c.createProcessingInstruction("xml","version='1.0' encoding='gb2312'")

do
c.insertBefore pi,doc.documentElement
do
c.documentElement.text = "你好"
do
c.save "C:/Text.xml"
setdo
c = nothing
 
谢谢jojo,另外,在西陆上你的id是不是jojo0381,在下不过是
好奇而已。
 
我的问题是:生成的xml文件用写字板打开汉字是乱码,而用记事本打开则正常,要命的是ftp上传给服务器(unix系统)cat后也是乱码.
我的程序是
doc.loadXML ("<?version='1.0' encoding='gb2312'?>")
是何道理?
 
后退
顶部