利用filter实时切换big5和gb2312,以及gb2312的简繁体

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

以前解决gb2312/big5实时转换的做法一般是修改Response.ContentEncoding

string switchLanguage(String strLanguage){

if(strLanguage.StartsWith("zh-cn")){

Response.ContentEncoding=Encoding.GetEncoding(936);

return "gb2312";

}

if(strLanguage.StartsWith("zh")){

Response.ContentEncoding=Encoding.GetEncoding(950);

return "big5";

}

Response.ContentEncoding=Encoding.GetEncoding(1252);

return "iso-8859-1";

}

范例:

switchLanguage(Request.UserLanguages[0]);

但有些GB2312简体字没有对应的Big5,所以需要先转换成繁体的Gb2312,再进行转换

如:“秋水无恨”的无,“中国”的国,就会显示“秋水?恨”和“中?”

等需要先转化为“秋水無恨”和“中國”,再转化为Big5。

而filter正好帮助我们实现实时切换,主要源代码如下(_sGB和_tGB是GB2312简繁体对应的库)。

public override void Write(byte[] buffer, int offset, int count)

{

Encoding e=Encoding.GetEncoding(936);

string str=e.GetString(buffer,offset,count);

for(int i=0;i<str.Length;i++){

int j=_sGB.IndexOf(str[i]);

if(j!=-1)str=str.Replace(_sGB[j],_tGB[j]);

}

e=Encoding.GetEncoding(System.Web.HttpContext.Current.Response.Charset);

_sink.Write(e.GetBytes(str), 0, e.GetByteCount(str));

}

范例:

<%@ Page Language="C#" %>

<script runat=server>

protected void Page_Load(Object sender, EventArgs ev)

{

Response.ContentEncoding=Encoding.GetEncoding(936);

if(Request["e"]!=null){

Response.Filter = new qswhFilter.g2bFilter(Response.Filter);

if(Request["e"]=="1")Response.Charset="big5";

}

userName.Text="秋水无恨(qiushuiwuhen)";

}

</script>

<asp:hyperlink runat=server NavigateUrl="g2bFilter.aspx" Text="Gb2312简体" />

<asp:hyperlink runat=server NavigateUrl="g2bFilter.aspx?e=0" Text="Gb2312繁体" />

<asp:hyperlink runat=server NavigateUrl="g2bFilter.aspx?e=1" Text="Big5繁体" />

hi,你好,我是<asp:label runat=server id=userName/>,欢迎来到<%="csdn中国程序员大本营"%>。

ps.如果web.config中有

<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>

可省略

Response.ContentEncoding=Encoding.GetEncoding(936);

cs 源代码和dll:

http://www.blueidea.com/user/qswh/g2bFilter.zip

dll直接拷到应用程序的bin目录即可调用

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航