300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java调用opencc进行中文简体繁体转换

java调用opencc进行中文简体繁体转换

时间:2021-08-24 10:11:34

相关推荐

java调用opencc进行中文简体繁体转换

Open Chinese Convert(OpenCC)是一个开源的中文简繁转换项目,致力于制作高质量的基于统计预料的简繁转换词库。还提供函数库(libopencc)、命令行简繁转换工具、人工校对工具、词典生成程序、在线转换服务及图形用户界面。

opencc的特点:

严格区分「一简对多繁」、「一简对多异」和「地域用词差别」。

支持异体字转换,兼容陆港澳台等不同地区用字差别。

严格审校一简对多繁词条,原则为「能分则不合」,用户可自定义合并。

支持中国大陆、台湾、香港异体字和地区习惯用词转换,如「裏」「裡」、「鼠標」「滑鼠」。

词库和函数库完全分离,可以自由修改、导入、扩展。

支持C、C++、Python、PHP、Java、Ruby、Node.js and Android等多种语言API,提供命令行直接调用,以及图形界面。

兼容Windows、Linux、Mac等多种平台。

项目使用java编写,官网说支持java语言,但是没有找到java的api,所以使用曲折的方式实现:linux下安装opencc,编写shell脚本,然后使用java调用shell脚本来进行简繁转换。

opencc安装请点击ubuntu安装opencc,简体转繁体

opencc安装后编写shell脚本

#!/bin/sh#echo$1echo$1|opencc-cs2tw

测试:

ubuntu@ubuntu-vm:/usr/local$./s2tw.sh微儿博客.cn微兒博客.cn

java调用shell

publicstaticObjectsc2tw(Stringcontent){try{StringBuffersb=newStringBuffer("");Processps=Runtime.getRuntime().exec("/usr/local/s2tw.sh\""+content+"\"");BufferedReaderin=newBufferedReader(newInputStreamReader(ps.getInputStream()));Stringline=null;ps.waitFor();while((line=in.readLine())!=null){sb.append(line);}in.close();if(sb.indexOf("\"")==0){sb=sb.deleteCharAt(0);}if(sb.lastIndexOf("\"")==sb.length()-1){sb=sb.deleteCharAt(sb.length()-1);}ps.destroy();line=null;returnsb;}catch(IOExceptione){logger.error("shell执行出错");}catch(InterruptedExceptione){logger.error("shell执行出错");}returncontent;}

但是具体执行过程中发现java程序运行一段时间后会卡死,经过排查发现当shell脚本传入的参数特别大时,java会一直等待shell脚本执行完成,所以对于长度特别长的文本采用分段转换

publicstaticStringsimple2tw(Stringcontent){StringBuffercs=newStringBuffer("");intlength=content.length();intcount=length/words;intys=length%words;if(count==0){cs.append(sc2tw(content));}else{for(inti=0;i<count;i++){cs.append(sc2tw(content.substring(i*words,(i+1)*words)));length=(i+1)*words;}if(ys>0){cs.append(sc2tw(content.substring(length)));}}returncs.toString();}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。