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

首頁 > 學院 > 開發設計 > 正文

對于ASP編碼問題的深入研究與最終解決方案

2019-11-18 19:05:45
字體:
來源:轉載
供稿:網友

哪的資料都不如官方資料權威。今天總算從MSDN中擇出了asp編碼問題的解決方案。

下面是MSDN中的一段話。

Setting @CODEPAGE explicitly affects literal strings in a single response. Response.CodePage affects dynamic strings in a single response, and session.CodePage affects dynamic strings in all responses in a session.
 

這句話解釋清楚了@CODEPAGE,Response.CodePage,Session.CodePage 分別的作用是什么。

@CODEPAGE作用于所有靜態的字符串,比如某文件中的 const blogname="我的家"

Response.CodePage,Session.CodePage作用于所有動態輸出的字符串,比如<%=blogname%>

這句話很關鍵的是說明了Response.CodePage的作用范圍是a single response,而SXNA中聲明的Session.CodePage的作用范圍是all responses in a session。

再看另外一句話。

If Response.CodePage is not explicitly set in a page, it is implicitly set by Session.CodePage, if sessions are enabled. If sessions are not enabled, Response.CodePage is set by @CodePage, if @CodePage is PResent in the page. If there is no @CodePage in the page, Response.CodePage is set by the AspCodePage metabase property. If the AspCodePage metabase property is not set, or set to 0, Response.CodePage is set by the system ANSI code page.
 

這句話我乍一看,把意思理解成了這樣:在sessions are enabled的時候,如果Response.CodePage沒有聲明,則Response.CodePage會被Session.CodePage賦值。如果sessions are not enabled的時候, 如果@CodePage已聲明,則Response.CodePage會被@CodePage賦值,等等.............

這句話解釋了為什么從SXNA中出來以后進入一些別的頁面比如oblog,z-blog等等容易出現亂碼,因為其他程序沒有聲明Response.CodePage而恰巧SXNA聲明了Session.CodePage,因此一進入SXNA,Session.CodePage立即被賦值(版本不同,有的版本賦了936有的版本賦了65001),而后進入其他程序的時候Response.CodePage馬上被Session.CodePage賦值,如果這時Response.CodePage與頁面本身編碼不一樣的話,頁面就會出現亂碼。所以進入z-blog出現亂碼的時候我查了當時的Session.CodePage和Response.CodePage都是936,而進入oblog出現亂碼的時候Session.CodePage和Response.CodePage都是65001.就是說要想保證葉面不出現亂碼,應該聲明Response.CodePage,否則他就會按照Session.CodePage來解釋網頁(而不是按照@codepage解釋網頁).

如果僅僅按照上面的解釋的話,我實際上是很糊涂的,因為我們都是用的中文操系統,當每一次進入瀏覽器的時候你可以嘗試輸出Session.CodePage,能看到他都是936!為什么進入Z-blog的時候他不把默認的Session.CodePage的936賦給Response.CodePage呢?反而把@CodePage給了Response.CodePage?什么情況下Session.CodePage才賦值給Response.CodePage呢?原文的sessions are enabled應該如何理解呢?

也許上面的話應該這樣理解:

在Session.CodePage被任何程序聲明的時候,如果Response.CodePage沒有聲明,則Response.CodePage會被Session.CodePage賦值。如果Session.CodePage沒有被任何程序聲明的時候, 如果@CodePage已聲明,則Response.CodePage會被@CodePage賦值,....,最后的頁面動態內容部分按照Response.CodePage的值解釋。
 

因為Zblog和Oblog都聲明了@CodePage,所以,用戶剛剛啟動完機器然后進入瀏覽器瀏覽Zblog和Oblog的時候Response.CodePage會被@CodePage賦值,于是葉面顯示正常。

這句話進一步解釋了產生亂碼的原因

If you set Response.CodePage or Session.CodePage explicitly, do so before sending non-literal strings to the client. If you use literal and non-literal strings in the same page, make sure the code page of @CODEPAGE matches the code page of Response.CodePage, or the literal strings are encoded differently from the non-literal strings and display incorrectly.
 

其中比較有用的一句話是說如果Response.CodePage和@CODEPAGE不一樣的話會產生亂碼。也就是說當Z-blog的@CODEPAGE=65001而Z-blog的Response.CodePage被Session.CodePage賦為936的時候就會出現亂碼,oblog反之亦然。

不知道上面說了這么多解釋清楚沒有-_-||

下面解釋一下為什么SXNA有時會把Session.CodePage賦為936,我有一個版本是這樣寫的:

<% OriginalCodePage=Session.CodePage %>

.......

<% Session.CodePage=OriginalCodePage %>
 

當用戶進入瀏覽器的時候Session.CodePage默認為936,這個時候的默認936不是程序聲明的,因此不會賦給Response.CodePage,當進入SXNA的時候,Session.CodePage被上面那段代碼一折騰就變成了程序聲明的Session.CodePage=936,因此再進入Zblog的時候就把936給了Response.CodePage。

至此,全部原因已經分析清楚了。

因此說,保證asp葉面一定不會出現亂碼的代碼應該是這樣的:(假定是UTF-8的葉子)

<%@ CODEPAGE=65001 %>

<% Response.CodePage=65001%>

<% Response.Charset="UTF-8" %>
 

進一步說明為什么要加Response.Charset,因為MSDN說應該加...呵呵

If the code page is set in a page, then Response.Charset should also be set.
 

另外,文件的編碼格式應該與@CODEPAGE一樣:

The file format of a Web page must be the same as the @CODEPAGE used in the page.
 

這就是為什么zblog,pjblog等一些程序要吧文件存成UTF8編碼格式的原因.

綜上,如果所有的程序都聲明了Response.CodePage就不會被Session.CodePage干擾而出現亂碼了。所以Session.CodePage還是不能輕易用的!

 

參考文章:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/268f1db1-9a36-4591-956b-d7269aeadcb0.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/582e6f47-52eb-413e-8b5d-c99145cb61d8.asp


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类极品videosbestfree| 精品调教chinesegay| 国产精品第3页| 亚洲一区二区三区香蕉| 亚洲精品美女网站| 黄色成人av网| 91在线免费看网站| 一区二区三区视频免费在线观看| 国产精品大陆在线观看| 日韩电影免费观看在线观看| www.久久久久| 97精品伊人久久久大香线蕉| 成人黄色大片在线免费观看| 亚洲最新av在线网站| 亚洲国产成人av在线| 国产精品偷伦免费视频观看的| 欧美激情一级精品国产| 欧美日韩国产第一页| 在线精品国产成人综合| 日本最新高清不卡中文字幕| 国产精品久久久久不卡| 国产欧美日韩免费看aⅴ视频| 国产精品久久久久久影视| 亚洲国产精品成人一区二区| 日韩中文字幕在线视频| 国产亚洲欧美一区| 色yeye香蕉凹凸一区二区av| 欧美电影免费播放| 国产精品久久久久久久久久免费| 国产黑人绿帽在线第一区| 亚洲一区二区久久久| 欧美激情精品久久久久久黑人| 亚洲开心激情网| 国产精品视频免费在线观看| 欧美日本高清视频| 中文字幕亚洲一区二区三区五十路| 欧美视频一区二区三区…| 992tv在线成人免费观看| 欧美怡红院视频一区二区三区| 亚洲人成毛片在线播放| 在线观看欧美www| 精品国产乱码久久久久酒店| 欧美诱惑福利视频| 国产亚洲精品久久久久久| 国产激情999| 久久人人爽国产| 欧美裸体男粗大视频在线观看| 亚洲午夜女主播在线直播| 午夜精品久久久久久99热软件| 久久亚洲精品小早川怜子66| 欧美国产亚洲精品久久久8v| 国产成人综合久久| 久久人人爽国产| 久久影视电视剧免费网站| 亚洲欧美另类人妖| 欧美黄色免费网站| 57pao国产成人免费| 亚洲午夜小视频| 欧美日韩中文字幕在线视频| 日韩专区在线播放| 成人av番号网| 国产精品美女久久久久av超清| 欧美日韩一区二区免费在线观看| 色无极亚洲影院| 日本精品一区二区三区在线播放视频| 精品香蕉一区二区三区| 欧美精品在线观看| 精品国产乱码久久久久久天美| 国产91成人在在线播放| 亚洲国产小视频在线观看| 日韩电视剧免费观看网站| 日韩精品高清在线观看| 欧美小视频在线观看| 欧美三级欧美成人高清www| 精品久久久久久久中文字幕| 久久久亚洲精选| 欧美日本在线视频中文字字幕| 日本精品久久中文字幕佐佐木| 亚洲国产成人精品久久久国产成人一区| 国产精品久久久精品| 国产成人高清激情视频在线观看| 亚洲女人被黑人巨大进入al| 久久综合伊人77777| 亚洲国产精品999| 欧美性猛交xxxx乱大交3| 亚洲国产精品嫩草影院久久| 亚洲第一视频在线观看| 亚洲摸下面视频| 久久久亚洲成人| 成人欧美一区二区三区黑人| 最近免费中文字幕视频2019| 中文字幕亚洲字幕| 亚洲国产日韩欧美在线动漫| 国产成人短视频| 国产97色在线| 精品视频久久久久久久| 欧美在线不卡区| 福利二区91精品bt7086| 国产精品女视频| 国产98色在线| 在线视频欧美日韩| 日韩av毛片网| 日韩视频永久免费观看| 欧美激情视频播放| 日韩精品免费在线视频| 国内精品久久影院| 青草青草久热精品视频在线观看| 亚洲国产美女精品久久久久∴| 国内精品国产三级国产在线专| 亚洲国产日韩欧美在线图片| 亚洲图中文字幕| 九九热精品视频| 久久精品视频播放| 久久在线免费视频| 亚洲第一国产精品| 中文字幕日本欧美| 欧美午夜激情小视频| 亚洲综合中文字幕在线| 4p变态网欧美系列| 国产精品成人一区| 57pao成人永久免费视频| 9.1国产丝袜在线观看| 国产精品网址在线| 欧美成人免费一级人片100| 国产97在线|日韩| 亚洲国产精品久久| 欧美成人sm免费视频| 中文字幕综合一区| 亚洲自拍偷拍区| 亚洲精品久久久一区二区三区| 欧美激情视频三区| 欧美插天视频在线播放| 亚洲美女精品成人在线视频| 欧美黑人性猛交| 91探花福利精品国产自产在线| 精品国产欧美一区二区五十路| 国产亚洲精品久久久久久牛牛| 欧美成人激情图片网| 欧美成人第一页| 亚洲人成在线免费观看| 日韩精品在线电影| 成人福利视频在线观看| 91sao在线观看国产| 欧美一区二区三区图| 福利一区福利二区微拍刺激| 欧美性猛交xxxxx水多| 亚洲欧美中文字幕| 欧美精品精品精品精品免费| 精品毛片三在线观看| 91免费看视频.| 亚洲美女福利视频网站| 久久999免费视频| 精品国产网站地址| 91网在线免费观看| 欧美乱大交做爰xxxⅹ性3| 色哟哟网站入口亚洲精品| 欧美激情xxxx性bbbb| 久久青草精品视频免费观看| 欧美诱惑福利视频| 欧美大片在线看免费观看| 欧美激情视频给我| 日韩高清人体午夜| 国产精品精品视频一区二区三区| 欧美日韩国产区|