关于使用中文分词工具ICTCLAS2013 Java版本乱码的问题

来源:互联网 发布:自学英语 知乎 编辑:程序博客网 时间:2024/05/17 21:38

中文分词工具ICTCLAS2013Java版本的使用什么的我就不罗嗦了,不知道怎么使用的点这里点击打开链接。

我的eclispe的text file encoding是GBK的。这个也就不废话了。

运行一下,控制台输出一堆乱码的东西:


图1. 直接运行后控制台输出乱码。


为什么会这个样子呢?看看工具发布主页的FAQ中的一个问题:

图2. FAQ中一个关于编码的问题。


根据图2中的这个回答,我将TestNLPIR.java中的33行试着修改一下:

if (testNLPIR.NLPIR_Init(argu.getBytes("GB2312"),1) == false)  ==>  if (testNLPIR.NLPIR_Init(argu.getBytes("GB2312"),0) == false)

现在控制台输出OK了。

图3. 修改代码第33行后控制台的输出

看看./test/test_result1.TXT   ./test/test_result2.TXT文件,同样编输出正确,并且是gbk的格式。


总结: 看看NLPIR.java中的public static native boolean  NLPIR_Init(byte[] sDataPath,int encoding),这函数第二个参数就是编码设置。

              Java编程环境是gbk,那么这个Init参数设置应该是0,对应就是gbk编码,后面一些字符编码什么的统统都设置成为GB2312。(比如 nativeStr = new String(nativeBytes, 0, nativeBytes.length, "GB2312"))。保持编程环境编码,Init参数,输出字符编码统一就OK的了。