`

简繁切换

阅读更多

 

 

转自:http://blog.sina.com.cn/s/blog_48e083df010007r4.html

 

规则:

以URL地址来决定简繁的显示,zh-cn/index.htm为简体,zh-tw/index.htm为繁体。

思路很简单,以IHttpHandler接口为基类,写一个类,用来处理HttpHandler,用ProcessRequest方法来处理客户端的请求。在ProcessRequest方法中获取url值,有zh-tw就用繁体,反之用简体。

using System;
using System.IO;
using System.Data;
using System.Configuration;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Text.RegularExpressions;
using Microsoft.VisualBasic;

导入以上命名空间,注意Microsoft.VisualBasic,要先引用一下Microsoft.VisualBasic。

public class HtmlHttpHandler : IHttpHandler
{
   //这里是定义的一个结构,与简繁转换无关,主要设定url重写的规则。
    private List<RegexInfo> _regex_list = new List<RegexInfo>();

    public HtmlHttpHandler()
    {
        DataSet ds = new DataSet();
        ds.ReadXml(ConfigurationManager.AppSettings["RegexsXml"]);
        foreach (DataRow r in ds.Tables["regex"].Rows)
            _regex_list.Add(new RegexInfo(((string)r["b"]).Trim(), ((string)r["a"]).Trim()));
    }


    //主方法

    public void ProcessRequest(HttpContext context)
    {
        string path = context.Request.Path;
        //foreach (RegexInfo r in _regex_list)
            //path = Regex.Replace(path, r._before, r._after);   //url重写
       //开始判断并转换
        if (path.IndexOf("zh-tw") != -1)
        {
            path = path.Replace("zh-tw", "zh-cn");
             //以自定义方式过滤
            context.Response.Filter = new CnToTwStream(context.Response.Filter, context.Response.ContentEncoding);
        }
        context.Server.Transfer(path);
    }

    // Override the IsReusable property.
    public bool IsReusable
    {
        get { return true; }
    }
}

CnToTwStream类实现简繁的转换

class CnToTwStream : Stream
{
    private Stream _sink;
    private MemoryStream _ms;
    private Encoding _encoding;

    public CnToTwStream(Stream sink, Encoding encoding)
    {
        _sink = sink;
        _ms = new MemoryStream();
        _encoding = encoding;
    }

    public override bool CanRead
    {
        get { return false; }
    }

    public override bool CanSeek
    {
        get { return false; }
    }

    public override bool CanWrite
    {
        get { return true; }
    }

    public override long Length
    {
        get { return _ms.Length; }
    }

    public override long Position
    {
        get { return _ms.Position; }
        set { throw new NotSupportedException(); }
    }

    public override int Read(byte[] buffer, int offset, int count)
    {
        throw new NotSupportedException();
    }

    public override long Seek(long offset, System.IO.SeekOrigin direction)
    {
        throw new NotSupportedException();
    }

    public override void SetLength(long length)
    {
        throw new NotSupportedException();
    }

    public override void Close()
    {
        _ms.Close();
        byte[] buffer_cn = _ms. GetBuffer_r();
        string str_cn = _encoding. GetString_r( buffer_cn );
        //用Strings类的StrConv方法,其中TraditionalChinese是VisualBasic中的一个枚举
        string str_tw = Strings.StrConv(str_cn, VbStrConv.TraditionalChinese, 0);
        str_tw = str_tw.Replace("__zh-cn__", "__zh-tw__");
        byte[] buffer_tw = _encoding. GetBytes_r(str_tw);
        using (_sink)
        {
            _sink.Write(buffer_tw, 0, buffer_tw.Length);
        }
    }

    public override void Flush()
    {
        _ms.Flush();
    }

    public override void Write(byte[] buffer, int offset, int count)
    {
        _ms.Write(buffer, offset, count);
    }
}

分享到:
评论

相关推荐

    javascript代码实现简繁切换

    首先,简繁切换的基本原理是通过特定的算法或库来转换文本中的汉字字符。`bgk2big.js`可能是一个用于实现简繁转换的JavaScript库,通常这样的库会包含一个映射表或者使用某种转换规则来处理字符集的转换。 在`demo....

    原生JS实现中文简繁切换 无flash死循环bug版

    在JavaScript的世界里,实现中文简繁体切换是一个常见的需求,特别是在构建多语言网站时。本教程将探讨如何使用原生JavaScript实现这一功能,避免依赖Flash并解决可能导致浏览器死循环的bug。 首先,我们需要理解简...

    php -> 简繁转换

    简繁转换的核心在于理解汉字的两种主要编码形式:GB2312(简体中文)和Big5(繁体中文)。GB2312是简体中文的标准编码,而Big5则用于传统繁体中文。在现代的Unicode编码(如UTF-8)环境中,这两种编码可以相互转换,...

    wp-chinese-switcher:文派简繁切换器(WP Chinese Switcher),完全基于您WordPress网站服务器端的中文繁简转换解决方案

    WP中文切换台文派简繁切换器(WP Chinese Switcher),完全基于您WordPress网站服务器端的中文繁简转换解决方案。此项目分叉于原WP中文转换中文简繁转换器免费插件,感谢原作者Ono Oogami提供了此工具。由于原插件...

    JS实现繁简体切换

    在网页开发中,为了满足不同用户群体的需求,有时我们需要提供繁体与简体中文的切换功能。本教程将深入探讨如何使用JavaScript(JS)来实现这一功能,让用户能够在访问网站时自由选择显示的语言版本。 首先,我们...

    简繁转换单元,实现简繁繁简的转换

    例如,一个网站为了覆盖更广泛的用户群体,可能会提供简繁切换的功能;又或者在翻译工作中,转换工具可以提高工作效率,减少人为错误。 描述中的重复部分可能是因为输入错误,但我们可以理解为强调该转换单元的核心...

    js控制页面简繁体切换

    网页简体繁体切换: 引入js资源&lt;script src="tw_cn.js"&gt;&lt;/script&gt; 资源下载本资源包 简体事件:(1);"&gt;简体 繁体事件:(2);"&gt;繁體&lt;/a&gt;

    网页一键繁简转换js插件-繁体简体切换.rar

    一个在网页上实现一键切换繁体、简体的JS封装类,原理是转换对象,使用递归,逐层剥到文本,关于参数设置:  var Default_isFT = 0//默认是否繁体,0-简体,1-繁体  var StranIt_Delay = 50 //翻译延时毫秒(设...

    网页简体繁体切换

    网页简体繁体切换是网页设计中一个常见的功能,它允许用户根据个人需求在简体中文和繁体中文之间自由转换。这一功能对于有不同语言习惯的用户群体来说非常重要,尤其是考虑到华语圈中,中国大陆普遍使用简体中文,而...

    VC 汉字简繁转换、文件分割、隐藏加密软件源码.rar

    一个集成了汉字简繁转换、文件加密等功能的VC 软件源码,这个软件包括了汉字的繁简转换、文件加密、DLL/OCX控件注册、定时关机,桌面宠物、文件分割、文件隐藏、光驱弹出等功能,一个小小的软件,集成了这么多小功能...

    简繁五笔最新版

    简繁五笔的最新版在原有的五笔编码基础上,增加了对简体和繁体字的兼容,使得用户在简繁切换时无需更换输入法,方便快捷。 在功能方面,简繁五笔最新版提供了丰富的词库,包括常用的词汇、成语以及专业术语,覆盖了...

    风清扬简繁五笔输入法6.91

    风清扬简繁五笔输入法6.91则在此基础上,增加了对简体和繁体字的支持,使得用户在简繁切换间无需更换输入法,提高了工作效率。 其中,“风清扬五笔自造词维护.exe”是该输入法的自定义词汇管理工具,用户可以通过这...

    一个非常好用繁简体转换js

    JS繁简切换 Code By Sundj. 网络上有一个Edited by tMosport写的JS繁简切换的脚本,我觉得不太方便用 参考了tMosport的代码重写了这个脚本。希望对你有所有帮助。 用法: ...

    网站中文简体繁体切换 修正切换过程出现的渐变

    在中文简繁切换的场景下,渐变问题可能表现为: 1. **文本长度变化**:相同意义的简体与繁体文本长度不同,可能导致页面布局在切换时出现错位或重叠。 2. **字体渲染**:不同的字符集可能需要特定的字体支持,字体...

    简繁中文切换JS文件

    简繁中文切换JS文件,ASPX文件中引用即可。

    WordPress主题黑格网址导航主题BlackCandy-V2.0

    BlackCandy-V2.0:全新升级! 首推专题区(推荐分类) 更多自定义颜色!选择自己喜欢的色系 焕然一新的UI设计,更加扁平和现代化 ...后台增加简繁切换,方便港澳台黑糖用户 增加图片loading加载动画 专题分类的特别设计

    极品五笔输入法2016春笋版官方安装版3264位

    极品五笔是一款非常好用的五笔输入法工具,适应多种操作系统,通用性能较好,精心筛选词组50000条,创五笔词汇新标准!极品五笔全面支持GB2312-80简体汉字字符... 2、支持繁体输入,"Ctrl ,"为简繁切换. 3、可选择左Shi

    简繁字体切换

    这是一个简单的js实现 简繁字体切换的代码

Global site tag (gtag.js) - Google Analytics