导航

yaosansi's Blog

当你背向太阳的时候,你只会看到自己的阴影!能力是有限的,努力无限的!

« Js中实现拼音和UrlEncode的功能(利用GB和Unicode对照表)JS(Unicode->GB)的精简版(仍含拼音和UrlEncode) »

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

  • 本站大部分内容从网上收集,收集目的仅供研究、学习。涉及版权或不希望收录您的文章请您及时与我联系。
  • 本站IM群,请自行选择。请各位朋友按照自己喜好加入。加入群后请及时发言,防止被清理。谢谢您的合作!!!
  • QQ群:Y①WEB开发(ASP.NET)号码:7351660 QQ群:Y②WEB开发(ASP+.NET)号码:11864905
  • QQ群:Y③WEB开发(DIV+CSS)号码:16610506 QQ群:Y④WEB开发(JS+AJAX)号码:16143998
  • QQ群:Y⑤WEB开发(新手)号码:12777715 MSN群:yaosansi[at]126.com
以前解决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 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#" %>




hi,你好,我是,欢迎来到<%="csdn中国程序员大本营"%>。

ps.如果web.config中有

可省略
Response.ContentEncoding=Encoding.GetEncoding(936);

cs 源代码和dll:
下载文件 点击下载此文件

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


原创文章如转载,请注明:转载自http://www.yaosansi.com
订阅本站,阅读更多文章
  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog .Theme from Google黑板报 By Washun

Copyright 2005-2008 yaosansi'site All Rights Reserved.

感谢Denny·G 为本站提供FTP空间
辽ICP备05021434号

Search

  •  

赞助商广告

控制面板

最新评论及回复

最近发表