java调用opencc,将简体中文转换成繁体
2017-01-06 10:24
585 查看
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脚本
支持异体字转换,兼容陆港澳台等不同地区用字差别。
严格审校一简对多繁词条,原则为「能分则不合」,用户可自定义合并。
支持中国大陆、台湾、香港异体字和地区习惯用词转换,如「裏」「裡」、「鼠標」「滑鼠」。
词库和函数库完全分离,可以自由修改、导入、扩展。
支持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 $1 echo $1 |opencc -c s2tw测试:
ubuntu@ubuntu-vm:/usr/local$ ./s2tw.sh 微儿博客 微兒博客java调用shell
public static Object sc2tw(String content){ try { StringBuffer sb = new StringBuffer(""); Process ps = Runtime.getRuntime().exec("/usr/local/s2tw.sh \""+content+"\""); BufferedReader in = new BufferedReader(new InputStreamReader(ps.getInputStream())); String line = 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; return sb; } catch (IOException e) { logger.error("shell执行出错"); } catch (InterruptedException e) { logger.error("shell执行出错"); } return content; }但是具体执行过程中发现java程序运行一段时间后会卡死,经过排查发现当shell脚本传入的参数特别大时,java会一直等待shell脚本执行完成,所以对于长度特别长的文本采用分段转换
public static String simple2tw(String content){ StringBuffer cs = new StringBuffer(""); int length = content.length(); int count = length/words; int ys = length%words; if (count==0) { cs.append(sc2tw(content)); }else{ for(int i=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))); } } return cs.toString(); }本文转载自 http://www.weare.net.cn/article/62eae88fa673b07361ba57cf79a0ed96.html
相关文章推荐
- java 中文简体繁体互相转换
- 中文繁体和简体转换 (Java代码)
- Java中文简体繁体转换
- 中文简体繁体转换js
- 繁体中文转换为简体中文的PHP类
- JavaScript简体繁体中文转换
- 简体中文转换为繁体中文的PHP函数
- C#实现简体中文和繁体中文的转换
- 简体中文转换为繁体中文的PHP函数
- 中文简体(GBK)与繁体(BIG5)的转换
- 繁体中文转换为简体中文的PHP函数
- 简体中文转换为繁体中文的PHP类
- PHP中繁体中文转换成简体中文
- 简体中文转换为繁体中文
- 中文简体与繁体的转换
- 中文简体繁体之间的转换
- 繁体中文转换为简体中文的PHP函数
- JavaScript简体繁体中文转换
- [中文文字转换组件 1.0] 简体/繁体/BIG5互转组件
- 在英文版的Office 2007中实现 中文 繁体和简体的相互转换