【声明:转载此信息在于传递更多信息,其内容表达的观点并不代表本站立场,由这些信息所产生的一切后果本站不负任何责任。如果您对本信息有什么意见,欢迎和本站联系,谢谢!】http://CiDu.Net
以前解决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。//by http://CiDu.Net/
而filter正好帮助我们实现实时切换,主要源代码如下(_sGB和_tGB是GB2312简繁体对应的库)。//by http://CiDu.Net/
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/>,欢迎来到<%="蓝色经典blueidea"%>。//by http://CiDu.Net/
ps.如果web.config中有 <globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/> 可省略 Response.ContentEncoding=Encoding.GetEncoding(936);
cs 源代码和dll: g2bFilter.zip dll直接拷到应用程序的bin目录即可调用
声明:以上信息资料大都是网上搜集而来,版权归作者,如有版权问题请留言告知我将马上改正。 文中所提到的各种观点只是原文观点,各种说法未经一一确认。并不代表本站认可此观点!!
|