Response.CodePage

针对当前响应,Response.CodePage属性指定了在内部对象中如何编码字符串。code page是一个字符集,可以包括数字、标点符号以及其它字形。对于每种语言,code page都是不一样的。有些语言,比如说日语和印地语,拥有多字节字符,与此同时,其它语言,比如说英语和德语,只需要用一字节来代表每个字符。CodePage属性是可读可写的。

句法

Response.CodePage [=CodePageID]

参数

CodePageID
一个整型数,代表字符格式化的code page。你可以在MSDN Web Workshop中,在FamilyCodePage列的下面找到code page整型数。

适用于

Response对象

备注

设置Response.CodePage显式影响单个网页,而Session.CodePage会影响一个会话中的所有响应。

如果一个网页中没有显式设置Response.CodePage,如果启用了会话,Session.CodePage就会潜在地设置它。如果没有启用会话,如果@CodePage出现在网页中,Response.CodePage@CodePage设置。如果网页中没有@CodePageResponse.CodePageAspCodePage元数据属性设置。如果没有设置AspCodePage元数据属性,或者它被设置为0,则Response.CodePage由系统ANSI code page设置。

对于每个响应主体,只有一个code page,否则会显示不正确的字符。如果你在两个网页中显式设置code page,其中一个网页用#includeServer.ExecuteServer.Transfer调用了另一个网页,通常父网页决定了code page。唯一的例外是,如果在调用Server.Execute的父网页中显式设置了Response.CodePage。那样的话,子网页中的@CodePage命令将覆盖父code page。

脚本中的字面值依然用@CodePage(如果存在的话)或AspCodePage元数据属性值(如果设置了的话)或者系统ANSI code page编码。如果你显式设置了Response.CodePageSession.CodePage,请在把非字面字符串发送到客户端之前做这。如果你在同一个网页中使用了字面字符串和非字面字符串,请确保@CodePage的code page匹配Response.CodePage的code page,否则会用不同的方式编码字面字符串和非字面字符串,并显示得不正确。

如果你的网页的code page匹配Web客户端的系统默认值,你不就需要在你的网页中设置code page。然而,推荐设置这个值。

如果在一个网页中设置了code page,则还应该设置Response.Charset。code page值指定IIS在建立响应时如何编码数据,而Charset值指定浏览器在显示响应时如何解码数据。Response.Charset的CharsetName参数一定得匹配code page值,否则浏览器上将显示混乱的字符。可以在MSDN Web Workshop中找到CharsetNames的列表,以及匹配的code page值,在Preferred Charset Label和FamilyCodePage列的下面。

网页的文件格式一定得与网页中使用的@CodePage相同。记事本让你能够把文件保存为UTF-8格式或系统ANSI格式。举个例子,如果@CodePage被设置为65001(表示UTF-8),Web文件一定会被保存为UTF-8格式。如果@CodePage被设置为1252(表示英语或德语),在一个英语或德语系统中,Web文件一定会保存成ANSI格式。如果你想把网页保存成针对一种并非你的系统语言的语言的ANSI格式,你可以在控制面板的区域和语言选项中,改变你的默认的系统位置设置。举个例子,在你把你的系统位置改成日本之后,你在ANSI格式中保存的任何文件,都会使用日语code page保存,只可以从日语系统中阅读。

如果你正在编写和测试使用不同的code page和字符集的网页(举个例子,如果你正在创建一个多语言Web网站),请记住你测试的客户端计算机一定得已经安装了每一种你想要显示的语言的语言包,你可以在控制面板中,从区域和语言选项中安装语言包。

示例代码

下面的示例演示了一个多语言网站的主页。主页被保存成UTF-8格式,因此可以显示来自所有语言的字符。该主页把客户端重定向到一个它们的语言的网页,利用 Request.ServerVariable("HTTP_ACCEPT_LANGUAGE")来辨别客户端语言。

--- Default.asp ---

<%@ CodePage=65001 Language="VBScript"%> 

<%  
' Default.asp 
' This file is saved in UTF-8 format. 
' The code page of the system doesn't matter because 
' you are setting @CodePage, Response.CodePage, and Response.Charset. 
' Otherwise, the system code page of the server would be the default. 

Response.CodePage = 65001 
Response.CharSet = "utf-8" 

' Redirect to the correct home page based on the client language. 
Select Case Request.ServerVariables("HTTP_ACCEPT_LANGUAGE") 

  Case "en-us", "en", "fr", "fr-fr", "es", "es-es", "zh", "zh-cn", "zh-tw" 
    Response.Redirect Request.ServerVariables("HTTP_ACCEPT_LANGUAGE") & "Start.asp" 

  Case Else 
    %> 
    Welcome.  Click <a href="enStart.asp">here</a> to go to the English Web site.<BR><BR> 
    Bienvenue. Cliquetez <a href="frStart.asp">ici</a> pour aller au Web site fran ais.<BR><BR> 
    Recepción. Haga clic <a href="esStart.asp">aquí</a> para ir al Web site espa ol.<BR><BR> 
    [Chinese characters with a link]<BR><BR> 
    [Taiwanese characters with a link]<BR><BR> 
    <% 

End Select 
%>

--- En-usStart.asp ---

<%@ Language="VBScript" %> 
<% Response.Redirect "enStart.asp" %>

--- EnStart.asp ---

<%@ CodePage=1252 Language="VBScript"%> 

<%  
' enStart.asp 
' This file is saved in ANSI format on a U.S. English system locale. 
' The language of the system doesn't matter 
'  because you are setting @CodePage and Response.CodePage. 
' Otherwise, the system code page of the server would be the default. 

Response.CodePage = 1252 
Response.CharSet = "windows-1252"  

Response.Write "<H1 align=center>News for Today</H1>" 
%> 

You can insert more content here, possibly using the <BR> 
IIS ContentLinking component, the <BR> 
IIS ContentRotator component, or the <BR> 
IIS AdRotator component.<BR>

必备条件

Client: Requires or Windows XP Professional.

Server: Requires or Windows Server 2003.

Product: IIS

如果你喜欢这篇文章,敬请给站长打赏↑

除特别注明外,本站所有文章均为本站站长原译,转载请注明出处。