日期:2009-12-15  浏览次数:20889 次

ASP 做的系统默认是 GB2312 的,有时候用来输出 XML 会遇到一个问题:就是大多数情况下要求 XML 为 UTF-8 格式的。

如果我们直接指定 <?xml version="1.0" encoding="utf-8"?> 是不够的。

正确的应该是:

<%
dim originalCoagePage
originalCoagePage = Session.CodePage ' 记住原来的 CodePage(默认为 936)
Session.CodePage = 65001 ' 设置新的 CodePage(UTF-8)
Response.CharSet = "UTF-8"
Response.ContentType = "text/xml"
%>
<?xml version="1.0" encoding="utf-8"?>
...
<%
Session.CodePage = originalCoagePage ' CodePage 复原
%>

网上有的把 Session.CodePage 写成 Response.CodePage,这是不对的;

另外网上有些没有复原 Session.CodePage,绝大多数情况下会导致问题,因为绝大多数情况下,我们在其他网页中没有指定 CodePage,一旦访问了指定 CodePage 的页面后,那些没有指定 CodePage 的页面也是按照该 CodePage 来指定的。

与 <%@ CodePage=936 %> 相比,Session.CodePage 与只会影响当前会话。

注意,一定要保证 Session.CodePage = originalCoagePage 这一句能够执行到,不要中途代码错误导致程序终止而没有执行到。