asp中讀取xml以及Utf-8和Gb2312亂碼問題

來源:互聯網
上載者:User
xml|問題

asp中建立xml對象通常使用:CreateObject("Microsoft.XMLDOM")
讀取節點:selectSingleNode("nodename")//nodename為節點名。
讀取屬性:attributes.getNamedItem("attribute")//attribute為節點中所具有的屬性名稱。
載入xml; load(Server.MapPath("data.xml"))
async 屬性工作表示是否允許非同步下載。
 
引用:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Response.Charset="UTF-8"%>
<html>
<title>read xml</title>
<body>
<%
dim node,i,nodecount
set Doc = CreateObject("Microsoft.XMLDOM")
Doc.async = false
Doc.load(Server.MapPath("data.xml"))
set root = Doc.documentElement
set nodeLis = root.childNodes
nodeCount = nodeLis.length
For i=1 to nodeCount
set node = nodeLis.nextNode()
set cost = node.attributes.getNamedItem("cost")
%>
第 <%=i%> 條記錄:
<table border="1">
<tr>
<td width="16" rowspan="2"><img src="<%=node.selectSingleNode("img").text%>"/></td>
<td width="17">書名</td>
<td width="48">出版社</td>
<td width="32">價格</td>
</tr>
<tr>
<td>
<%=node.selectSingleNode("name").text%>
</td>
<td>
<%=node.selectSingleNode("publisher").text%>
</td>
<td>
<%= cost.text%>
</td>
</tr>
</table>
<%
Next
%>
</body>
</html>

XML
引用:
<?xml version="1.0" encoding="utf-8"?>
<data>
<book cost="56">
<name>Dreamweaver</name>
<publisher>上海科技出版社</publisher>
<img>img/dw.jpg</img>
</book>
<book cost="62">
<name>Flash</name>
<publisher>鐵道出版社</publisher>
<img>img/flash.jpg</img>
</book>
<book cost="48">
<name>Firweorks</name>
<publisher>教育出版社</publisher>
<img>img/fw.jpg</img>
</book>
</data> 
 
Utf-8和Gb2312亂碼問題的終結
研究好多天了,也試過好多辦法了,總結出目前發現最好的方法:
先說一下基本的東西:
<%@ codepage=65001%>UTF-8
<%@ codepage=936%>簡體中文
<%@ codepage=950%>繁體中文
<%@ codepage=437 %>美國/加拿大英語

<%@ codepage=932 %>日文
<%@ codepage=949 %>韓文
<%@ codepage=866 %>俄文

codepage指定了IIS按什麼編碼讀取傳遞過來的串串(表單提交,地址欄傳遞等)。

出亂碼的原因也就是網站要整合的時候模組編碼不一樣引起的。
就像我的部落格一樣,整合的時候都會出這個問題,因為BLOG是Utf-8的,
近來很多網友都在為這個問題諮詢,我嘗試了很多種方法。
最方便的方法如下:
不要轉換任何模組網頁的編碼該utf-8的還是utf-8,該Gb22312的還是Gb2312
在Utf-8模組的包檔案(如conn.asp,但是要注意conn.asp必須是在第一行調用)最前面加上
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Session.CodePage=65001%>
在GB2312模組的包檔案最前面加上
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Session.CodePage=936%>
其他編碼的類推。

asp讀寫xml
<%    
  '----------------------------------------------------------------    
  '程式簡介:   完成asp語言對XML文檔中指定節點文本的增加、刪除、修改、查看    
  '入口參數:   無    
  '出口參數:   無    
  '------------------------------------------------    
  '函數名字:ConnectXml()    
  '入口參數:   filename   需要串連或開啟的xml檔案名稱    
  '出口參數:   無    
  '傳回值   :ConnectXml=0,XMLMorntekDocument就是一個成功裝載XML文檔的對象了。    
  '   ConnectXml<>0,則列印錯誤資訊strError    
  '------------------------------------------------    
  dim   XMLMorntekDocument    
   
  function   ConnectXml(filename)    
  dim   strSourceFile    
  strSourceFile   =   Server.MapPath(filename)    
  Set   XMLMorntekDocument   =   Server.CreateObject("Microsoft.XMLDOM")      
  XMLMorntekDocument.async   =   false      
  XMLMorntekDocument.load(strSourceFile)    
  ConnectXml=XMLMorntekDocument.parseerror.errorcode    
  if   XMLMorntekDocument.parseerror.errorcode<>0   then    
  strError="<h2>error"&XMLMorntekDocument.parseerror.errorcode&"</h2>"    
  strError=strError&XMLMorntekDocument.parseerror.reason&"<br>"    
  strError=strError&XMLMorntekDocument.parseerror.url&"<br>"    
  strError=strError&XMLMorntekDocument.parseerror.line&"<br>"    
  strError=strError&XMLMorntekDocument.parseerror.filepos&"<br>"    
  strError=strError&XMLMorntekDocument.parseerror.srcText&"<br>"    
  response.write   strError    
  end   if    
  end   function    
   
  '------------------------------------------------    
  '函數名字:CloseXml()    
  '入口參數:   無    
  '出口參數:   無    
  '------------------------------------------------    
  function   CloseXml(XMLMorntekDocument)    
  if   IsObject(XMLMorntekDocument)   then    
  set   XMLMorntekDocument=nothing    
  end   if    
  end   function    
   
   
  '------------------------------------------------    
  '函數名字:SelectXmlNodeText(elementname)    
  '入口參數:   elementname   元素的名字    
  '出口參數:   無    
  '------------------------------------------------    
  function   SelectXmlNodeText(elementname)      
          elementname="//"&elementname    
          temp=XMLMorntekDocument.selectSingleNode(elementname).text    
          selectXmlNodeText=   server.htmlencode(temp)      
   
  end   function      
   
  '------------------------------------------------    
  '函數名字:InsertXmlNodeText(befelementname,elementname,elementtext)    
  '入口參數:   elementname   插入的元素的名字    
  '                     befelementname在此元素的名字前面插入元素    
  '                     elementtext   插入的元素的文本    
  '出口參數:   無    
  '------------------------------------------------    
  function   InsertXmlNodeText(befelementname,elementname,elementtext)      
  dim   befelement,element    
  set   befelement=XMLMorntekDocument.selectSingleNode("//"&befelementname)    
  set   element=   XMLMorntekDocument.createelement(elementname)    
  befelement.insertBefore   element,befelement.firstchild    
  element.text=elementtext    
  end   function      
   
  '------------------------------------------------    
  '函數名字:UpdateXmlNodeText(elementname,newelementtext)    
  '入口參數:   elementname   元素的名字    
  '                     newelementtext元素的新文本    
  '出口參數:   無    
  '------------------------------------------------    
  function   UpdateXmlNodeText(elementname,newelementtext)      
  dim   element    
  set   element=XMLMorntekDocument.selectSingleNode("//"&elementname)    
  element.text=newelementtext    
  end   function      
   
  '------------------------------------------------    
  '函數名字:DeleteXmlNodeText(elementname)    
  '入口參數:   elementname   元素的名字    
  '出口參數:   無    
  '------------------------------------------------    
  function   DeleteXmlNodeText(elementname)      
  XMLMorntekDocument.selectSingleNode("//"&elementname).text   =""    
  end   function      
  %>   
 




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.