日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

對(duì)于ASP編碼亂碼問(wèn)題的深入研究與最終解決方案

admin
2015年8月23日 23:2 本文熱度 7606

ASP亂碼確實(shí)棘手,這個(gè)說(shuō)明比較權(quán)威。有待研究。哪的資料都不如官方資料權(quán)威。今天總算從MSDN中擇出了ASP編碼問(wèn)題的解決方案。
... ASP亂碼確實(shí)棘手,這個(gè)說(shuō)明比較權(quán)威。有待研究。

哪的資料都不如官方資料權(quán)威。今天總算從MSDN中擇出了ASP編碼問(wèn)題的解決方案。

下面是MSDN中的一段話(huà)。

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.

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

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

Response.CodePage,Session.CodePage作用于所有動(dòng)態(tài)輸出的字符串,比如<%=blogname%>

這句話(huà)很關(guān)鍵的是說(shuō)明了Response.CodePage的作用范圍是a single response,而SXNA中聲明的Session.CodePage的作用范圍是all responses in a session。

再看另外一句話(huà)。

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.

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

這句話(huà)解釋了為什么從SXNA中出來(lái)以后進(jìn)入一些別的頁(yè)面比如oblog,z-blog等等容易出現(xiàn)亂碼,因?yàn)槠渌绦驔](méi)有聲明Response.CodePage而恰巧SXNA聲明了Session.CodePage,因此一進(jìn)入SXNA,Session.CodePage立即被賦值(版本不同,有的版本賦了936有的版本賦了65001),而后進(jìn)入其他程序的時(shí)候Response.CodePage馬上被Session.CodePage賦值,如果這時(shí)Response.CodePage與頁(yè)面本身編碼不一樣的話(huà),頁(yè)面就會(huì)出現(xiàn)亂碼。所以進(jìn)入z-blog出現(xiàn)亂碼的時(shí)候我查了當(dāng)時(shí)的Session.CodePage和Response.CodePage都是936,而進(jìn)入oblog出現(xiàn)亂碼的時(shí)候Session.CodePage和Response.CodePage都是65001.就是說(shuō)要想保證葉面不出現(xiàn)亂碼,應(yīng)該聲明Response.CodePage,否則他就會(huì)按照Session.CodePage來(lái)解釋網(wǎng)頁(yè)(而不是按照@codepage解釋網(wǎng)頁(yè)).

如果僅僅按照上面的解釋的話(huà),我實(shí)際上是很糊涂的,因?yàn)槲覀兌际怯玫闹形牟傧到y(tǒng),當(dāng)每一次進(jìn)入瀏覽器的時(shí)候你可以嘗試輸出Session.CodePage,能看到他都是936!為什么進(jìn)入Z-blog的時(shí)候他不把默認(rèn)的Session.CodePage的936賦給Response.CodePage呢?反而把@CodePage給了Response.CodePage?什么情況下Session.CodePage才賦值給Response.CodePage呢?原文的sessions are enabled應(yīng)該如何理解呢?

也許上面的話(huà)應(yīng)該這樣理解:

在Session.CodePage任何程序聲明的時(shí)候,如果Response.CodePage沒(méi)有聲明,則Response.CodePage會(huì)被Session.CodePage賦值。如果Session.CodePage沒(méi)有被任何程序聲明的時(shí)候, 如果@CodePage已聲明,則Response.CodePage會(huì)被@CodePage賦值,....,最后的頁(yè)面動(dòng)態(tài)內(nèi)容部分按照Response.CodePage的值解釋。

因?yàn)閆blog和Oblog都聲明了@CodePage,所以,用戶(hù)剛剛啟動(dòng)完機(jī)器然后進(jìn)入瀏覽器瀏覽Zblog和Oblog的時(shí)候Response.CodePage會(huì)被@CodePage賦值,于是葉面顯示正常。

這句話(huà)進(jìn)一步解釋了產(chǎn)生亂碼的原因

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.

其中比較有用的一句話(huà)是說(shuō)如果Response.CodePage@CODEPAGE不一樣的話(huà)會(huì)產(chǎn)生亂碼。也就是說(shuō)當(dāng)Z-blog的@CODEPAGE=65001而Z-blog的Response.CodePage被Session.CodePage賦為936的時(shí)候就會(huì)出現(xiàn)亂碼,oblog反之亦然。

不知道上面說(shuō)了這么多解釋清楚沒(méi)有-_-||

下面解釋一下為什么SXNA有時(shí)會(huì)把Session.CodePage賦為936,我有一個(gè)版本是這樣寫(xiě)的:

<% OriginalCodePage=Session.CodePage %>

.......

<% Session.CodePage=OriginalCodePage %>

當(dāng)用戶(hù)進(jìn)入瀏覽器的時(shí)候Session.CodePage默認(rèn)為936,這個(gè)時(shí)候的默認(rèn)936不是程序聲明的,因此不會(huì)賦給Response.CodePage,當(dāng)進(jìn)入SXNA的時(shí)候,Session.CodePage被上面那段代碼一折騰就變成了程序聲明的Session.CodePage=936,因此再進(jìn)入Zblog的時(shí)候就把936給了Response.CodePage。

至此,全部原因已經(jīng)分析清楚了。

因此說(shuō),保證asp葉面一定不會(huì)出現(xiàn)亂碼的代碼應(yīng)該是這樣的:(假定是UTF-8的葉子)

<%@ CODEPAGE=65001 %>

<% Response.CodePage=65001%>

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

進(jìn)一步說(shuō)明為什么要加Response.Charset,因?yàn)镸SDN說(shuō)應(yīng)該加...呵呵

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

另外,文件的編碼格式應(yīng)該與@CODEPAGE一樣:

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

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

綜上,如果所有的程序都聲明了Response.CodePage就不會(huì)被Session.CodePage干擾而出現(xiàn)亂碼了。所以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


該文章在 2015/8/23 23:02:22 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

AV色免费看| 三级无码内射| 欧美一区 不卡 不卡 在| 亚洲中文字幕诱惑| 一区,二区,三区精品免费看| www大鸡巴com| 亚洲男人av| 九九九亚洲综合| 夫码一二区| s日本无码| 日本免费一区冫| 日本有码在线不卡| 欧美日韩人妻精品中| 亚洲综合网图片区欧美| 日本 一二三区VR久久久| 多人操B精品视频| 欧美性爱 综合| 艹bav在线观看| 国产精品免费在线一区| 大肥逼视频免费不卡的| 国产一级二级精品在线久久| 久久国产精品ⅤA麻豆野战| 午夜中文无码| 亚洲AV无码一级毛在线观看| 欧美美女操逼操操逼| 超碰hc| 日日日色婷婷一区二区 | 天天天天射天天天天天干| 舔b视频免费看| 亚洲午夜影院久久久| 日韩熟妇尺寸| 蜜桃 av 色| 日韩熟女第一页| 日本美女打开她的逼逼| 在线北条麻妃一区| 欧美二区三区四区久久精品| 久鲁鲁午夜影院影一级| 日韩美女内射在线| 亚洲日韩精品久久中文字幕组| 五月天激情午夜福利| 三级久久AⅤ|