今天调研一个任务,基于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); } }
由于时间有限,写的比较仓促,如有考虑不周情况,请大家批评指正。
相关推荐
繁体简体转换程序繁体简体转换程序繁体简体转换程序繁体简体转换程序繁体简体转换程序
javascript 写的web繁体简体转换,直接引用,使用方便
中文简繁体转换程序,支持简体中文转换到繁体,支持繁体转换到简体中文
VC++中文繁体、简体(BIG-GBK)编码转换程序
Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter 命名空间包含繁体中文和简体中文转换的工具。
简体繁体转换器VB源码简体繁体转换器VB源码简体繁体转换器VB源码简体繁体转换器VB源码简体繁体转换器VB源码简体繁体转换器VB源码
一个不错的繁简转换程序,希望大家喜欢!搞了半天才搞出来的。不足之处请指教。谢谢。版权所有-天空中的鱼 欢迎使用我们公司的浏览器-阿库浏览器。
chrome 插件,用于将繁体转换成简体和简体转换成繁体,这对于看繁体的文章特别有用;已经实测过了,需要解压,然后选择开发者模式,然后加载
VC++ 中进行简体中文(GB2312)向繁体(BIG5)转换的程序。
VC 繁体简体文字转换程序源码,可实现简体GB2312、繁体BIG5之间的互相转换,程序操作简单,使用方便,支持文件操作,载入纯文本格式的繁体或简体文字文件即可,选择需要转换的类型,点击“转换”按钮,即可实现快速...
批量去除TXT文件中隔一个字一个空格的情况。 2.在指定的目录上级生成日志文件。 批量去掉TXT文件名中的非法字符RenameFile.bat 1.批量重命名文件,去除文件名中不规范的字符。 2.在指定的目录上级生成日志文件。...
VC 中文简体繁体字符转换程序,简繁字体互转,可载入外部文本,并转换其中的文字为简体或繁体。通过点击“查看”按钮,可查看转换后的结果。程序操作界面如截图所示。
中文繁体简体转换的依赖文件, 解压后与程序代码放在同一目录即可. 代码与博文中的一致, 可以复制粘贴过去使用.
简繁体转换小程序,delphi写的,平时自己也用,可以粘贴文本和打开文档进行转换,感觉很方便的,不要动不动就要打开庞大的word进行简繁体转换。
简体与繁体的互相转换
一个Delphi版的繁体、简体编辑转换类,暂时没有示例程序,仅提供了一个Pascal文件(Pascal单元的源代码),有需要的朋友研究一下。
PB中,把繁体代码转成简体,或是简体转繁体
VB繁体简体转换程序,Big5-GB转换,支持逆运算,也就是可以把简体转换繁体,繁体转换成简体中文,支持批量转换,压缩包内一共3个实例代码,并包括了一个API繁简转换类,专用于VB6.0,三个程序的转换效果都挺不错,...
PB开发的程序中自动根据简体转换为繁体,或者根据简体转换为繁体,无需再写一遍程序