问题解决:MapReduce输出结果乱码(Eclipse)

本文介绍了在处理文件时遇到的乱码问题,分析了可能是由于文件编码格式(GB2312)与编辑器(UTF-8)不匹配导致的。提供了两种解决方案:一是将文件转换为UTF-8格式,二是代码中指定文件编码。通过实例展示了如何在Eclipse和Notepad++中检查及修改编码设置,强调了解决此类问题的重要性。
摘要由CSDN通过智能技术生成

大家好,我是邵奈一,一个不务正业的程序猿、正儿八经的斜杠青年。
1、世人称我为:被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员…
2、这几年,我整理了很多IT技术相关的教程给大家,爱生活、爱分享。
3、如果您觉得文章有用,请收藏,转发,评论,并关注我,谢谢!
博客导航跳转(请收藏):邵奈一的技术博客导航
| 公众号 | 微信 | CSDN | 掘金 | 51CTO | 简书 | 微博 |


0x00 教程内容

  1. 本文章是属于常见的问题,主要是对问题进行了场景还原、接着一步一步操作探索原因,最后解决问题。

0x01 问题呈现

统计结果直接使用Eclipse打开,发现是乱码的:
在这里插入图片描述
此时,将此文件拖到Notepad++软件打开,也是乱码的:
在这里插入图片描述

0x02 探索原因

对于乱码问题,常见的原因可能是编辑器编码设置问题,也可能是输入文件的编码格式没对应。所以,此时可以使用Notepad++打开一下需要统计的文件,看一下是什么格式的。

可以看到是GB2312:
在这里插入图片描述
扩展解释:
GB2312是中国规定的汉字编码,也可以说是简体中文的字符集编码;
GBK 是 GB2312的扩展 ,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名。
总体说来,GBK包括所有的汉字,包括简体和繁体。而gb2312则只包括简体汉字。

此时,再去查看一下项目的编码格式:
右击项目名,选择Properties,查看到是UTF-8:
在这里插入图片描述
所以大家也可以再回去看一下在Notepad++中的统计结果,格式其实也是UTF-8格式的。

0x03 解决问题

解决办法一

将需要统计的文本文件,转化成UTF-8就可以了,操作如下:

在这里插入图片描述

重新执行统计任务,可以看到执行结果:

在这里插入图片描述
其实我们一般都是用UTF-8格式的,包括Eclipse的设置也是一样,如果大家的配置跟我的不一致,也可以考虑跟我一样设置好。

解决办法二

如果不想改项目的编码设置,比如现在是这样:

在这里插入图片描述
同时待统计的文件也是GB2312:
在这里插入图片描述
那么我们在读取文件的时候可以指定一下文件格式,修改一下代码:

//String lines = value.toString();
String lines = new String(value.getBytes(),0,value.getLength(),"GBK"); 

可以看到统计结果也是乱码的:
在这里插入图片描述
但是!用Notepad++打开,是非乱码的,而且格式是UTF-8的。我将Eclipse设置成不是UTF-8,其实也是为了说明一个问题:MapReduce默认就是输出成UTF-8格式的。

此时,其实你也可以像上面的步骤一样,将Eclipse的编码再设置回UTF-8,你在Eclipse里看到的乱码文件,就变成中文了:
在这里插入图片描述

0xFF 总结

  1. 所以,最简单的办法其实还是将需要统计文件的编码格式改成UTF-8,这样我们就不需要改代码了,否则,你需要指定输入文件的编码格式,不然就会像开头的统计结果一样,只有三行,而且是乱码的。

邵奈一 原创不易,如转载请标明出处,教育是一生的事业。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值