实验目的:使用wordcount实现中文无词典分词的功能
实验背景:文件上传后,进行无词典分词,再进行统计中文词之后,结果在eclipse下显示为乱码
针对乱码所做实验:
0)文件直接上传,在eclipse打开显示正常,但结果显示乱码
1)将文件格式改成UTF-8之后,再上传,结果发现在eclipse下打开是乱码,但在namenode:50070下打开是能显示的,
2)在1)的基础上,无视eclipse乱码,在mapper中进行无词典切词,输出文件结果在eclipse乱码,而namenode:50070下均能正常显示,当结果不正确
3)在workspace下,将gbk改成utf-8,输入文件除第一行乱码,其他行显示正常,输出文件结果在eclipse出现部分乱码
4)在2)的基础上,通过观察文件中输出(由于不能再控制台输出,具体原因不是很清楚),发现字符串下标为0的字符是乱码,所以将下标改成从1开始,结果eclipse和namenode下均显示正常,且结果正确。
结论及解决之道:
常规的出现乱码的解决方案: http://hi.baidu.com/liangkejia/item/fc70a83a3e4a7c4f033edc10
我把文件改成UTF-8,注意把第一行改成是空行,因为我发现,第一行的下标为0的字符是无法显示的,因此我错了这么久。
再把window->Preference->workspace 下改成UTF-8,其实,这只是影响到eclipse的显示。
工程右击->Properities下改成UTF-8,这个我自从改过了之后,就不能改成gbk了,所以我也不能判断着是不是有用,总之都是UTF-8总不会有错吧。
这三步之后,无论是eclipse下,还是在namenode下看到的能正常显示的。
一些技巧:
1)拷贝出来,可以看乱码。针对在namenode下还是能显示,但是我把东西从namenode下拷贝出来,放在notepad下结果就出现了乱码,这是才焕然大悟
2)想方设法把东西输出来,进行调试。很奇怪,我运行成功时,我在map下用print,竟然打印不出来,所以我把东西写到了关键字中,这样我就可以看到啦,所以要想方设法得到这个运行的过程,这样才知道错哪了。