完善解决ASP乱码问题

自开始写asp,乱码就一直是个恼人的问题,一直没有好的解决办法,这些天搜到博客园上的一片文章,测试了一下,问题解决了

以GB2312为例,不乱码的基本前提:
加入代码声明 <%@ CODEPAGE="936" %>
文档保存的编码格式与代码声明一致

我们可选的设置:
Response.CodePage=936
Response.Charset="gb2312"
Session.CodePage=936

MSDN上的相关说明:
在Session.CodePage被任何程序声明的时候,如果Response.CodePage没有声明,则Response.CodePage会被Session.CodePage赋值。如果Session.CodePage没有被任何程序声明的时候, 而@CodePage已声明,则Response.CodePage会被@CodePage赋值,最后的页面动态内容部分按照Response.CodePage的值解释。

我的理解:要注意的是@CodePage和Response.CodePage的作用范围都是页面级,而Session.CodePage是全局的,如果从不同的编码页面之间跳转,Session.CodePage的设置就会扰乱编码,因此尽可能少用Session.CodePage,或者干脆不用。

不会乱码的代码:
程序代码 程序代码
<%@ CODEPAGE=936 %>
<% Response.CodePage=936%>
<% Response.Charset="GB2312" %>

如果是UTF8编码:
程序代码 程序代码
<%@ CODEPAGE=65001 %>
<% Response.CodePage=65001%>
<% Response.Charset="UTF-8" %>
posted @ 2008-11-13 11:45  shaoyun  阅读(877)  评论(0编辑  收藏  举报