亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > XML > 正文

關于XMLHTTP客戶端與ASP交互傳輸XML時所產生的中文編碼問題的解決方案

2024-09-05 20:56:01
字體:
來源:轉載
供稿:網友
 

測試通過系統:winxp 中文pro, xml4.0 sp2,c#

  嘗試過xmlhttp作客戶端,然后嘗試與服務器端asp交互的程序員,我認為都很有思路,當然這也是在自夸:)。但最頭疼的問題恐怕就是中文亂碼的問題,查了很多資料,msdn,互聯網上的,嘗試了很多方法都不太奏效,還好沒有氣餒,現在,最新的最簡單的解決辦法閃亮登場:

把客戶端要傳輸的xml的頭由:

<?xml version="1.0" encoding="gb2312" ?>

改為:

<?xml version="1.0" encoding="utf-8" ?>

服務器端的asp程序發送給客戶端xml結果時需要加:

response.contenttype = "text/xml"
response.charset = "gb2312"

客戶端的程序取返回結果用xmldom.loadxml(xmlhttp.responsetext)就可以了。

 ============================================================================

以下分析可能的原因:

可能是我們的操作系統本身使用utf-8編碼的原因。

把所有request.servervariables寫到一個文本文件中你會發現類似這些:

all_http:http_accept:*/*
http_accept_language:zh-cn
http_connection:keep-alive
http_host:localhost
http_user_agent:mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; .net clr 1.1.4322; .net clr 2.0.50727; infopath.1)
http_cookie:aspsessionidaqbcsqra=fnehnoccmheccopiokkecefm
http_content_length:94
http_content_type:text/xml;charset=gb2312
http_accept_encoding:gzip, deflate
http_cache_control:no-cache

all_raw:accept: */*
accept-language: zh-cn
connection: keep-alive
host: localhost
user-agent: mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; .net clr 1.1.4322; .net clr 2.0.50727; infopath.1)
cookie: aspsessionidaqbcsqra=fnehnoccmheccopiokkecefm
content-length: 94
content-type: text/xml;charset=gb2312
accept-encoding: gzip, deflate
cache-control: no-cache

appl_md_path:/lm/w3svc/1/root/zdqs
appl_physical_path:c:/inetpub/systems/zds/qry/
auth_password:
auth_type:
auth_user:
cert_cookie:
cert_flags:
cert_issuer:
cert_keysize:
cert_secretkeysize:
cert_serialnumber:
cert_server_issuer:
cert_server_subject:
cert_subject:
content_length:94
content_type:text/xml;charset=gb2312
gateway_interface:cgi/1.1
https:off
https_keysize:
https_secretkeysize:
https_server_issuer:
https_server_subject:
instance_id:1
instance_meta_path:/lm/w3svc/1
local_addr:127.0.0.1
logon_user:
path_info:/zdqs/qury.asp
path_translated:c:/inetpub/systems/zds/qry/qury.asp
query_string:
remote_addr:127.0.0.1
remote_host:127.0.0.1
remote_user:
request_method:post
script_name:/zdqs/qury.asp
server_name:localhost
server_port:80
server_port_secure:0
server_protocol:http/1.1
server_software:microsoft-iis/5.1
url:/zdqs/qury.asp
http_accept:*/*
http_accept_language:zh-cn
http_connection:keep-alive
http_host:localhost
http_user_agent:mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; .net clr 1.1.4322; .net clr 2.0.50727; infopath.1)
http_cookie:aspsessionidaqbcsqra=fnehnoccmheccopiokkecefm
http_content_length:94
http_content_type:text/xml;charset=gb2312
http_accept_encoding:gzip, deflate
http_cache_control:no-cache

猜測一:網絡傳輸過程中所用的編碼方式是gb2312

然后,請看另外msxml4 sdk中一個幫助:

 

enforcing character encoding with dom

in some cases, an xml document is passed to and processed by an application—for example, an asp page—that cannot properly decode rare or new characters. when this happens, you might be able to work around the problem by relying on dom to handle the character encoding. this bypasses the incapable application.

for example, the following xml document contains the character entity ("&#8364;") that corresponds to the euro currency symbol (?). the asp page, incapable.asp, cannot process currency.xml.

xml data (currency.xml)

<?xml version="1.0" encoding="utf-8"?><currency>   <name>euro</name>   <symbol>&#8364;</symbol>   <exchange>      <base>us___fckpd___0lt;/base>      <rate>1.106</rate>   </exchange></currency>

asp page (incapable.asp)

<%@language = "javascript"%><%   var doc = new activexobject("msxml2.domdocument.4.0");   doc.async = false;   if (doc.load(server.mappath("currency.xml"))==true) {      response.contenttype = "text/xml";      response.write(doc.xml);   }%>

when incapable.asp is opened from a web browser, an error such as the following results:

an invalid character was found in text content. error processing resource 'http://mywebserver/myvirtualdirectory/incapable.asp'. line 4, position 10

this error is caused by the use of the response.write(doc.xml) instruction in the incapable.asp code. because it calls upon asp to encode/decode the euro currency symbol character found in currency.xml, it fails.

however, you can fix this error. to do so, replace this response.write(doc.xml) instruction in incapable.asp with the following line:

doc.save(response);

with this line, the error does not occur. the asp code does produce the correct output in a web browser, as follows:

  <?xml version="1.0" encoding="utf-8" ?>   <currency>    <name>euro</name>     <symbol>?</symbol>     <exchange>      <base>us$</base>       <rate>1.106</rate>     </exchange>  </currency>

the effect of the change in the asp page is to let the dom object (doc)—instead of the response object on the asp page—handle the character encoding.

請看最后一句:上例中asp的改變在于讓dom對象(doc)——而不是asp中的response對象——處理字符編碼。

所以得出:

猜想二:你可以視request或response對象為一個文件句柄,如果是用dom對象的load與save方法時。

由猜想一、猜想二得出

猜想三:客戶端編譯的系統使用的字符串本身就是采用gb2312編碼的,而使用xmlhttp傳輸數據時自動轉換為gb2312,服務器端用dom對象load時由于相當于載入一個字節流,然后一看xml頭中的encoding就是gb2312,所以就沒做轉換,直接把字節流視為字符串?。?!不好意思是它的確忘記了一件事就是,這個字符串在我的系統顯示時卻認為是utf-8編碼的,所以只有強制xml轉換以下就行了,好像見別人的解決方案時也有寫gb2312到utf-8轉換函數的……

最后實踐,證實可行?。?!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩激情网| 精品伊人久久97| 91九色综合久久| 国产精品99久久久久久白浆小说| 亚洲成人性视频| 国产伦精品一区二区三区精品视频| 欧美激情久久久久| 亚洲午夜未满十八勿入免费观看全集| 国产激情综合五月久久| 2019亚洲男人天堂| 欧美日韩国产999| 欧美激情一区二区久久久| 亚洲精品www久久久久久广东| 久久97久久97精品免视看| 精品久久久久久中文字幕大豆网| 亚洲男人天堂久| 久久久久久久999精品视频| 日韩国产在线播放| 日日噜噜噜夜夜爽亚洲精品| 亚洲国产婷婷香蕉久久久久久| 国产一区二区三区欧美| 国产精品午夜国产小视频| 日本三级韩国三级久久| 久久久久日韩精品久久久男男| 欧美日韩在线视频一区二区| 国产噜噜噜噜久久久久久久久| 日韩欧美在线中文字幕| 欧美日韩国产第一页| 538国产精品一区二区免费视频| 亚洲国产精品久久91精品| 久久国内精品一国内精品| 久久激情五月丁香伊人| 欧美福利视频网站| 国产精品日韩欧美大师| 亚洲乱码一区av黑人高潮| 91精品视频在线播放| 亚洲成人av在线| 国产一区二区黑人欧美xxxx| 久久久久久久久91| 色七七影院综合| 久久久黄色av| 国语自产在线不卡| 国产精品一香蕉国产线看观看| 午夜精品美女自拍福到在线| 欧美激情一级二级| 精品福利视频导航| 国产精品久久久久久久久久久久久| 性色av一区二区三区红粉影视| 久久99精品久久久久久琪琪| 午夜精品福利视频| 亚洲国产天堂久久国产91| 在线观看日韩www视频免费| 日韩电影免费观看在线观看| 精品爽片免费看久久| 欧美极品少妇与黑人| 久久影视三级福利片| 亚洲精品白浆高清久久久久久| 国产视频精品一区二区三区| 黄网动漫久久久| 乱亲女秽乱长久久久| 国产亚洲一区二区在线| 欧美精品在线免费| 亚洲国产成人在线播放| 中日韩美女免费视频网址在线观看| 欧美日韩国内自拍| 日韩成人高清在线| 久久伊人精品天天| 亚洲国产高潮在线观看| 精品色蜜蜜精品视频在线观看| 国产精品96久久久久久| 91sao在线观看国产| 久久久久久久久久久久久久久久久久av| 66m—66摸成人免费视频| 久久久成人精品| 亚洲第一国产精品| 欧美重口另类videos人妖| 欧美在线欧美在线| 亚洲精品日韩av| 亚洲欧美中文在线视频| 成人午夜一级二级三级| 日韩精品免费一线在线观看| 欧美一区二区大胆人体摄影专业网站| 欧美性生交xxxxx久久久| 成人免费网站在线| 成人黄色免费网站在线观看| 国产精品久久久久999| 久久久久久久久久久国产| 欧美视频在线免费看| 亚洲成人三级在线| 欧美精品videosex性欧美| 国产欧美一区二区三区久久人妖| 国产精品美腿一区在线看| 91精品视频大全| 亚洲欧美一区二区三区在线| 国产精品免费一区| 亚洲小视频在线| 97免费视频在线| 欧美一级视频一区二区| 国产精品永久在线| 亚洲国产精品电影在线观看| 色综合久久悠悠| 亚洲精品永久免费| 国产精品视频播放| 亚洲欧美综合v| 成人性生交大片免费看视频直播| 欧美精品在线播放| 欧美一区二区.| 亚洲精品一区二区久| 成人欧美一区二区三区黑人| 国产精品一区二区av影院萌芽| 国产精品最新在线观看| 国产精品www| 中文字幕日韩在线观看| 国产视频自拍一区| 视频在线观看一区二区| 欧美日韩国产黄| 成人午夜在线视频一区| 久久精品99久久香蕉国产色戒| 欧美高跟鞋交xxxxhd| 日韩精品在线观看一区二区| 国产美女精品视频| 欧美精品性视频| 亚洲天堂色网站| 日韩电影在线观看中文字幕| 岛国av一区二区在线在线观看| 91高潮在线观看| 欧美在线视频免费| 午夜精品久久久久久久男人的天堂| 日韩av在线免费观看一区| 亚洲欧美日本精品| 国内免费精品永久在线视频| 亚洲第一区在线观看| 欧美一区亚洲一区| 国产91精品黑色丝袜高跟鞋| 亚洲深夜福利网站| 中日韩午夜理伦电影免费| 日韩精品视频在线| 国产日韩欧美自拍| 久久亚洲综合国产精品99麻豆精品福利| 久久九九精品99国产精品| 精品久久久久久久久久| 欧美性猛交xxxx黑人| 日本久久中文字幕| 国产91在线播放精品91| 欧美午夜无遮挡| 国产一区二区三区视频免费| 在线一区二区日韩| 国产精品丝袜久久久久久不卡| 久久久亚洲国产天美传媒修理工| 伊人亚洲福利一区二区三区| 亚洲一区二区在线播放| 欧美日韩国产丝袜另类| 91欧美视频网站| 久久视频免费观看| 自拍视频国产精品| 亚洲精品色婷婷福利天堂| 国产精品一区二区3区| 中文综合在线观看| 91av在线免费观看视频| 久久亚洲精品毛片| 国产v综合v亚洲欧美久久| 日韩免费在线播放| 欧美激情精品久久久久久免费印度| 国产精品美女免费视频|