自己写的一个繁体到简体的转换程序

          今天调研一个任务,基于java的filter实现繁体到简体的转换,于是写了一个demo,给各位博友奉上,欢迎批评指正。

         实现的思路是重载request的调取参数的几个方法,然后做下转换。

          转换类用的是网上的ZHConverter,就不多讲了,看一个例子就好:

          

public class Test {
	public static void main(String[] args) throws Exception {
		// Instantiation will fetch the property file which load the Chinese character mappings
		ZHConverter converter = ZHConverter.getInstance(ZHConverter.SIMPLIFIED);

		String traditionalSrc = "有背光的機械式鍵盤";
		String simplified = converter.convert(traditionalSrc);
		System.out.println(simplified);


		// Or 
		String simplifiedSrc = "简体字";
		String traditional = ZHConverter.convert(simplifiedSrc, ZHConverter.TRADITIONAL);
		System.out.println(traditional);    
	}
}

 

            1. 首先实现一个filter

           

/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		 // perform request filtering  
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;  
        CharChangeHttpRequest requestWrapper  = new CharChangeHttpRequest(httpServletRequest);              
       
        // continue the filter chain  
        chain.doFilter(requestWrapper, response);
          
        // perform response filtering  
	}

          

   2. 由于自己封装了HttpServletRequest, 下面是自己写的实现

       

public class CharChangeHttpRequest extends HttpServletRequestWrapper {
	public CharChangeHttpRequest(HttpServletRequest request) {
		super(request);
	}

	@Override
	public String[] getParameterValues(String name) {
		String[] value = super.getParameterValues(name);
		if(value == null){
			return null;
		} else {
			String[] rValues = new String[value.length];
			for(int i = 0; i < rValues.length; i++){
				rValues[i] = convert(value[i]);
			}
			return rValues;
		}
    }

	@Override
     public String getParameter(String name) {
        String value = super.getParameter(name);
        if(value == null || value.length() == 0){
        	return value;
        }
        
        return convert(value);
     }
     
     private String convert(String value){
    	 ZHConverter converter = ZHConverter.getInstance(ZHConverter.SIMPLIFIED);
         try {
 			return converter.convert(new String(value.getBytes("iso-8859-1"),"utf-8"));
 		} catch (UnsupportedEncodingException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
         return "";
     }
     
     private String[] convert(String[] values){
    	 String[] rValues = new String[values.length];
			for(int i = 0; i < rValues.length; i++){
				rValues[i] = convert(values[i]);
			}
			return rValues;
     }
     
     @Override
     public Map getParameterMap() {
    	 Map originMap = super.getParameterMap();
         Map<String,String[]> newMap = new HashMap<String,String[]>(originMap); 
         for (Iterator it = newMap.entrySet().iterator(); it.hasNext();) {
             Map.Entry entry = (Map.Entry)it.next();
             entry.setValue(convert((String[])entry.getValue()));
         }
         return Collections.unmodifiableMap(newMap);
     }

}

      

    由于时间有限,写的比较仓促,如有考虑不周情况,请大家批评指正。

 

       

模仿语言包式的简繁转换功能插件,轻松实现繁体简体互换,很方便,只有一个JS文件。Std_StranJF.js文件只支持GB2312码,big52gb.js支持utf-8。   一、将繁简互换JS文件上传至空间:   如果您调用的是,则将繁简互换JS文件(Std_StranJF.Js)上传至网站的js目录中。当然您也可以上传至网站的其他何地方,如根目录下。如果上传在网站根目录下,则要将调用代码改成:   二、页面调用的方法:   在您的网站中请按以下方法添加以下的代码:   1. 在页面中加上以下链接:   繁体中文   这个是每个页面中显示进行简繁转换的链接,您可以放在页面顶部,如顶部的导航处。   如果您用的是默认的动易模板,则进入网站后台,依次点击“系统设置”->“自定义标签管理”->“2006海蓝”->“{$MY_动易2006海蓝首页顶}”->点击“修改”链接,在出现的自定义标签内容页面中,找到“{$ShowChannel} {$Rss}{$Wap}”,修改成“{$ShowChannel} |繁体中文|{$Rss}{$Wap}”即可。当然您也可以放在任何您想要放置的地方。   2. 在页面中放以下代码:      这个是每个页面中要调用繁体简体互换的JS代码,您放在页面底部,如前面。   如果您用的是默认的动易模板,则进入网站后台,依次点击“系统设置”->“自定义标签管理”->“2006海蓝”->“{$MY_动易2006海蓝网页底}”->点击“修改”链接,在出现的自定义标签内容页面中,找到“”,修改成“”即可。当然您也可以放在任何您想要放置的地方。   小提示:您也可以不修改自定义标签,而是通过系统模板批量替换功能来添加以上的代码。但利用修改模板的自定义标签内容更方便。在修改了自定义标签后要记得更新您网站的缓存。若您开启了网站的生成功能,则在添加了代码后要生成全部相关的页面。   三、繁简互换JS文件参数的修改:   您可以进一步修改繁简互换JS文件(Std_StranJF.Js)以达到您想要的效果。请以记事本打开修改Std_StranJF.Js文件:   var Default_isFT = 0 //默认是否繁体,0-简体,1-繁体   var StranIt_Delay = 50 //翻译延时毫秒(设这个的目的是让网页先流畅的显现出来)   同时如果您的网站中有本文件中没有放入的繁体简体互换的内容,则可以在本文件中进一步添加与扩充,以满足您的应用需求。   小提示:本插件同时可用于论坛等需要进行繁简互换的地方。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值