2008年6月5日

遭遇编码问题

        编写文本处理相关的程序,编码问题向来是一个非常容易出现问题的区域。这不,今天我就又一次被“折腾”了 :)

        前几天写好的Stanford Parser的Wrapper在进行Tokenize后和原文进行alignment以获取对应各元素的begin和end。但是今天出现一篇文档,在Upali那里出现问题,我这里也出现问题,Xiaofeng那里却一点问题没有。高兴的是总算还有一个好使的,沮丧的是同样的程序同样的文本,结果怎么就会不一样呢?一度无奈时我开始怀疑自己的rp了。但一想不对啊,upali的也不行啊,这位斯里兰卡大哥人很好的,编程绝对的高手,linux方面更是无人能及。

        最后最后,和xiangfeng详细对比了他的机器和我的机器的各种配置,发现居然是系统默认的编码格式不一样。系统默认语言是英文时对应的是Cp1252,默认为中文时对应编码为GBK。据查实,Java虚拟机就是根据默认编码来处理相关文本的,最终导致了处理一个Ascii不能显示的字符处xiaofeng的可以,我的不行。我在将系统默认语言改为英文后这个问题不再存在。Submit SVN后在Upali那里运行,结果还是不行,这可真是大跌眼镜啊。经过仔细盘查,终于发现Upali大哥是自己写的编码转换程序,分别采用过utf8和ISO-8859-1,经过俺修改为Cp1252后,程序终于运行起来了。正确运行那一刻upali大哥也高兴的惊呼一声。

    由此知道了为什么xiaofeng的机器好使,我和upali的都不行。

    这Java虚拟机还真霸道啊,改明儿个有空了,好好学习一下如何解决摆脱系统默认语言的限制。

没有评论: