Java中繁体中文转换为简体中文

 2024-01-27 00:02:21  阅读 0

一、简介

(Open,开放中文转换)是一个用于简体中文和繁体中文转换的开源项目。 支持词汇级转换、变体转换和地区习惯词转换(中国大陆、台湾、香港)。 其官方网站位于:。

严格区分“一简多繁”、“一简多异”,全面兼容异体字,支持大陆、台湾、香港地区异体字和地区习惯词的转换,词库与函数库完全分离,支持C、C++、PHP、Java、Ruby、Node.js并兼容Linux和Mac平台。

Wiki中,有详细的介绍以及与cconv的比较。 还支持现代汉语常用的简体、繁体一对多词义、地名等。 从介绍来看,应该是一个比较好的解决方案。

2. 获取二进制文件

本站文章《使用2017()编译1.0.4(开放)源码》中介绍了如何在该平台下编译1.0.4。 为了方便读者,编译好的文件(.dll、.lib)可以直接从CSDN下载; 其他操作系统下的编译请参考其他相关文档。

3. Java中调用繁体转简体

3.1 如何从Java调用DLL

在本站的《Java中调用DLL动态链接库,基于JNA的解决方案》一文中介绍了如何在Java中使用JNA调用动态链接库的解决方案,这里不再赘述。 本文最后还给出了一个完整的项目。 JNA的使用非常简单。 如果你之前没有使用过JNA,你可以直接看代码。

3.2 查看.dll导出的API

为了构建JNA Stub代码,我们必须了解.dll中导出接口的定义,这可以通过三种方式完成:

① 通过.h头文件(推荐)

所有导出函数都定义在.h头文件中,主要包括:

(常量字符*);

(常量*);

整数();

(,const char* 输入,,char*);

char* ( ,const char* 输入, );

无效自由(字符* str);

const char*(无效);

如下所示:

通过.h头文件查看.dll的导出函数

②使用工具

该工具是一个内置工具。 它无法从 CMD 运行,但需要从开发人员命令提示符运行。 使用命令

/.dll

就是这样:

使用命令获取dll动态链接库的导出API

③使用(即原VC6中的.exe)

它早在VC6时代就存在了,用于查看DLL动态链接库的依赖关系和导出函数。 不过,这个工具在VC6中已经不存在了。 据传,其被删除的原因是该工具被SDK团队评估为质量不合格。 我们可以从中下载并使用它来分析.dll的导出函数,如下图所示:

使用导出的函数查看.dll

3.3 构建JNA存根代码

根据JNA类型映射规范,我们可以构造如下的Stub类代码(另请注意图中.dll、配置文件和ocd文件的位置):

使用Java调用时的JNA接口代码

对应的代码是:

com.mei.;

com.sun.jna.;

com.sun.jna.;

com.sun.jna.;

com.sun.jna.;

= () .("", .class);

( );

( );

整数();

int ( , 输入 , int , );

(,输入,整数);

无效自由(输入);

();

3.4 编写Java调用.dll的测试代码

以下是从Java调用.dll的测试代码。 相关使用请参考相关官方文档。 以下是繁体中文到简体中文的转换,使用默认的t2s配置文件,这里不再赘述:

使用Java调用时测试代码

对应的代码是:

com.mei.;

com.mei..;

com.sun.jna.;

班级

无效主([]参数)

尝试

= "E:\\-sts-3.3.0.\\\\lib\\t2s.json";

= ..();

如果 (.() == -1)

。呃。(..());

;

input = "中文简繁体转换开源项目,支持词汇级别转换、异体字转换和地区习惯词转换(中国大陆、台湾、香港)";

= ..(, 输入, . – 1);

如果(==空)

。呃。(..());

;

。出去。();

..自由的();

。出去。(..());

捕获(e)

.err.(e.());

需要注意:

①.dll应该使用32位还是64位版本取决于JDK或JRE是32位还是64位。 如果使用了不正确的版本,将会报告错误“java.lang.: %1 is not a valid Win32 ”。 程序”;

②文件编码要设置为UTF-8,否则由于字符串的编码问题,会报错“UTF8”,调用时返回null;

③调用时配置文件的路径必须是绝对路径。 如果路径中含有中文等,则需要使用;

④ 如果调用失败,返回的指针为-1。 请注意您的判断和使用以获得错误原因;

⑤ 调用时,可能需要使用*.ocd 文件。 该文件必须放置在与配置文件相同的路径下,否则会出现“.ocd not found or not”等错误信息。 将会被举报;

⑥调用时,最后一个参数是一个字段,文档中明确指出“If is ()-1, the full ( by '\0') will be .”;

⑦需要免费拨打电话才能发布转换结果;

我们可以看到上面的繁体中文已经成功转换为中文了:

使用 Java 调用时测试代码输出

3.5 Java调用.dll的完整工程(x64)

Java调用.dll的完整项目(x64)位于。请点击这里查看。 如果有用,欢迎star。

转载请保留出处,非法转载将追究到底:农民工小梅»Java中繁体简体转换,基于(开放)解决方案

转载请注明:学石网 » Java中繁体中文转换为简体中文,基于(开放)的解决方案

标签: 调用 转换 导出

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码