分享
 
 
 

利用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目录即可调用

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有