为何读取远程回来的XML中有中文的内容时均为?
请求端
'加载要发送的请求XML数据
Dim docSubmit
Set docSubmit = CreateObject( "Microsoft.XMLDOM ")
docSubmit.async = False
docSubmit.loadXML xmlMessage
'向远程发送XML请求数据
Set poster = CreateObject( "MSXML2.XMLHTTP ")
poster.open "POST ", url, False
poster.send docSubmit
'接收远程返回的结果
Dim responseData,objstream
set objstream = Server.CreateObject( "adodb.stream ")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write poster.responseBody
objstream.Position = 0
objstream.Type = 2
objstream.Charset = "GBK "
responseData = objstream.ReadText
objstream.Close
set objstream = nothing
response.write responseData
'此时,这里直接打印返回的XML数据时,有中文部分就变成?,如
<?xml version= '1.0 ' encoding= 'GBK '?> <root> <Item> <isSuccess> false </isSuccess> <Message> IP??,??????! </Message> <UserID> </UserID> <UserName> </UserName> </Item> </root>
远程服务端
responseData= " <?xml version= '1.0 ' encoding= 'GBK '?> <root> "
responseData=responseData& " <Item> <isSuccess> false </isSuccess> <Message> IP地址 "&requestIP& ",非法访问页面! </Message> <UserID> </UserID> <UserName> </UserName> </Item> "
response.write responseData
[解决办法]
不是这样子的。
如果远程服务端是一个xml文件,并且把字符集定义为中文,那么没问题
如果远程服务端是一个程序文件,例如asp,即使他把字符集定义为中文,用你这种方式调用也会出问题,他必须在程序中定义content type= "xml " ,这样才没问题。