Open GoogleCodeExporter opened 9 years ago
自己看了一下源代码,发现问题的原因是在Utility.CC_ID方法里�
��,这个里面有个getBytes的方
法,直接用的系统默认的编码,改成getBytes("GB18030")后问题解�
��,还发现Utility里面很多
getBytes都是用的系统默认的编码,在处理中文字符时都会有问
题吧,特别是不同系统下面
Original comment by zz.zha...@gmail.com
on 2 Sep 2009 at 7:56
希望作者能改成UTF-8
Original comment by yaoxing...@gmail.com
on 22 Sep 2009 at 4:32
好像弄成UTF8很麻烦的样子啊,他里边很多都是用了getBytes()方
法,编码都是写死的。。。
Original comment by DingCon...@gmail.com
on 26 Sep 2009 at 3:21
折腾了一阵,发现原因主要是Utility.java里面的多个判断/查找�
��符的方法使用的是GB2312编码
方式计算的(getBytes()返回2个字节),因此当你在UTF8环境下输入
字符串, 这些所有方法的返回
都是失效的(最明显的例子就是返回的分词全部是一个字一��
�词)
解决办法:
1. 首先将所有文件转换成UTF8 (linux 下用iconv)
2. 查找org.ictclas4j.utility.Utility.java 这个文件,
把所有的xxx.getBytes() 方法改成
xxx.getBytes("GBK") 或者 xxx.getBytes("GB18030"). 然后再用try catch 语句包围起来
(eclipse会提示需要检查UnsupportedEncodingException)
然后就ok了
需要注意的是, org.ictclas4j.utility.GFString.java里面有类似
byte[] uniBytes = str.getBytes("utf-16be");
这种语句,不要改
Original comment by Newway....@gmail.com
on 10 Feb 2010 at 6:20
参照 Comment 4 by Newway.Liu, 的方法 我是这样修改的
1.文件编码不用转换
2.在Utility.java 新增一个编码常量 和一个编码方法
public static final String ENCODING="GB2312";
public static byte[] getBytes(String str){
try {
return str.getBytes(Utility.ENCODING);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return new byte[0];
}
3.替换代码理所有的 src.getBytes() 为 Utility.getBytes(src);
Original comment by zgd2...@163.com
on 25 Aug 2010 at 3:32
1.在netbeans使用时,需要将src目录中的内容拷贝到新建工程的s
rc目录中。
2加入必要的库;
3右击项目名称,选择“属性”窗口,在打开的窗口中,选择�
��下面的“编码”,将其改为“GBK”;
4在org.ictclas4j.segment.SegTag.java中的main方法中,把BufferedReader
reader= new BufferedReader(new
InputStreamReader(System.in));这句话改为:BufferedReader reader= new
BufferedReader(new InputStreamReader(System.in,"GBK"));
5运行程序,可输入中文进行处理
Original comment by hgs0...@gmail.com
on 31 Dec 2010 at 2:10
Original issue reported on code.google.com by
zz.zha...@gmail.com
on 1 Sep 2009 at 7:05